我正在尝试使用shouldChangeCharactersInRange函数阻止文本视图中除数字字符之外的任何输入。这是我的代码:
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
if ((textField.text?.characters.count <= 5) || (string.characters.count == 0)) && string.isNumber() {
if string.characters.count == 0 {
labels[range.location].text = "_"
} else {
labels[range.location].text = string
}
return true
} else {
return false
}
}
func isNumber() -> Bool{
let badCharacters = NSCharacterSet.decimalDigitCharacterSet().invertedSet
return self.rangeOfCharacterFromSet(badCharacters) == nil
}
它适用于大多数情况,但我无法理解为什么在极少数情况下为string ==“^”或string ==“¨”,函数返回false但我的textfield正在更改。
你能解释一下如何防止这种行为或为什么我不能处理它?</ p>