【发布时间】:2020-04-15 19:28:57
【问题描述】:
我有一个数字文本字段,当用户在该字段中键入时,该文本字段已经格式化;它看起来像这样:
这是我的代码:
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
}
}
知道如何让它以与用户键入时相同的格式填充文本字段吗?
请注意,当我保存电话号码时,我会删除空格和字符,因此号码会像 1234567889 一样保存在数据库中。
【问题讨论】:
标签: ios swift iphone format uitextfield