我使用了这个代码,但我遇到的问题是,如果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 }
希望这可以帮助!