[英]Format inputed digits to US phone number to format (###) ###-####
我使用了这个代码,但我遇到的问题是,如果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
}
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.