当前位置 : 主页 > 手机开发 > ios >

ios – 将输入的数字格式化为美国电话号码格式化(###)### – ####

来源:互联网 收集:自由互联 发布时间:2021-06-11
我使用了这个代码,但我遇到的问题是,如果texfield为空(索引超出界限)它不起作用,另一个问题是如果用户没有更改phonenumber并点击Save按钮它将再次执行代码并插入“((”和“ – ”. 关于我
我使用了这个代码,但我遇到的问题是,如果texfield为空(索引超出界限)它不起作用,另一个问题是如果用户没有更改phonenumber并点击Save按钮它将再次执行代码并插入“((”和“ – ”.

关于我能做什么的任何想法?

var stringts: NSMutableString = self.ts.text
stringts.insertString("(", atIndex: 0)
stringts.insertString(")", atIndex: 4)
stringts.insertString("-", atIndex: 5)
stringts.insertString("-", atIndex: 9)
self.ts.text = stringts
您可以在从用户输入时验证输入.使用UITextFieldDelgate执行此操作:

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {

    let str = (textField.text! as NSString).stringByReplacingCharactersInRange(range, withString: string)

    if textField == txtFieldPhoneNumber{

        return checkEnglishPhoneNumberFormat(string, str: str)

    }else{

        return true
    }
}

验证输入的功能:

func checkEnglishPhoneNumberFormat(string: String?, str: String?) -> Bool{

    if string == ""{ //BackSpace

        return true

    }else if str!.characters.count < 3{

        if str!.characters.count == 1{

            txtFieldPhoneNumber.text = "("
        }

    }else if str!.characters.count == 5{

        txtFieldPhoneNumber.text = txtFieldPhoneNumber.text! + ") "

    }else if str!.characters.count == 10{

        txtFieldPhoneNumber.text = txtFieldPhoneNumber.text! + "-"

    }else if str!.characters.count > 14{

        return false
    }

    return true
}

希望这可以帮助!

网友评论