【发布时间】:2016-07-17 14:46:14
【问题描述】:
我正在尝试在 textField 中进行验证,以确保它只包含字母。在我按下退格键之前它一直有效。
作为一种解决方法,我尝试创建一个NSMutableCharacterSet 并使用formUnionWithCharacterSet 添加NSCharacterSet.letterCharacterSet()。然后我添加了退格键。那也不行。
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
// Limit to Letters & Backspace
// let charactersAllowed = NSCharacterSet.letterCharacterSet()
let charactersAllowed = NSMutableCharacterSet()
charactersAllowed.formUnionWithCharacterSet(NSCharacterSet.letterCharacterSet())
charactersAllowed.addCharactersInString("\\b")
if let rangeOfCharactersAllowed = string.rangeOfCharacterFromSet(charactersAllowed, options: .CaseInsensitiveSearch) {
return rangeOfCharactersAllowed.count == string.characters.count
} else {
displayAlert("Invalid Character", alertMessage: "Please enter only letters")
return false
}
}
我在 Objective-C 中找到了一些老生常谈的答案,但它们似乎都不适合我。去NSMutableCharacterSet路由验证有什么其他建议吗?
如果有帮助,我正在使用模拟器并尝试按键盘右上角的退格键(删除)。
【问题讨论】:
-
@danh 谢谢。我会着手弄清楚如何处理它。
标签: ios swift uitextfield uitextfielddelegate