如何在 swift 中为文本字段设置掩码?例如,电话文本字段,当用户键入它时显示为电话格式,如 objective-C 中的以下代码:
self.textField.mask = @"(##)####-####";
最佳答案
Swift 4&&5 非常简单的电话号码掩码
您必须将此代码用作文本字段委托(delegate)。
func formattedNumber(number: String) -> String {
let cleanPhoneNumber = number.components(separatedBy: CharacterSet.decimalDigits.inverted).joined()
let mask = "## ### ###"
var result = ""
var index = cleanPhoneNumber.startIndex
for ch in mask! where index < cleanPhoneNumber.endIndex {
if ch == "#" {
result.append(cleanPhoneNumber[index])
index = cleanPhoneNumber.index(after: index)
} else {
result.append(ch)
}
}
return result
}
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
}
关于swift - 在 swift 中屏蔽 textField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32016350/