我有一个Textfield,用于在字段中输入用户时已经格式化的数字;它如下所示:
https://i.stack.imgur.com/BPAMC.png
这是我的代码:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
phoneNumberTextField.delegate = self
retrieveUserData()
}
func formattedNumber(number: String) -> String {
let cleanPhoneNumber = number.components(separatedBy: CharacterSet.decimalDigits.inverted).joined()
let mask = "(XXX) XXX-XXXX"
var result = ""
var index = cleanPhoneNumber.startIndex
for ch in mask where index < cleanPhoneNumber.endIndex {
if ch == "X" {
result.append(cleanPhoneNumber[index])
index = cleanPhoneNumber.index(after: index)
} else {
result.append(ch)
}
}
return result
}
extension AccounInfotVC: UITextFieldDelegate {
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
guard let text = textField.text else { return false }
let newString = (text as NSString).replacingCharacters(in: range, with: string)
textField.text = formattedNumber(number: newString)
return false
}
}
但是,当我的视图加载时,在用以下代码从数据库中自动填充该数字之后,将不会对其进行格式化:
func retrieveUserData(){
db.collection(DatabaseRef.Users).document(userID).getDocument { (snap, error) in
self.phoneNumberTextField?.text = phoneNumber
}
}
所以这个数字是这样填充的:https://i.stack.imgur.com/zHw0g.pnghere
而不是这样:https://i.stack.imgur.com/Oeolc.png
知道如何让它以与用户输入相同的格式填充TextField吗?
请注意,当我保存电话号码时,我删除空格和字符以便将数字保存如下1234567889在数据库里。
这
self.phoneNumberTextField?.text = phoneNumber
不会触发shouldChangeCharactersIn,你需要
self.phoneNumberTextField?.text = formattedNumber(number:phoneNumber)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。