我使用了这个代码,但我遇到的问题是,如果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 }
希望这可以帮助!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。