shouldChangeCharactersInRange返回false但正在更改文本字段文本

时间:2016-11-18 10:17:38

标签: ios swift2 xcode8

我正在尝试使用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正在更改。

Screenshot

你能解释一下如何防止这种行为或为什么我不能处理它?<​​/ p>

0 个答案:

没有答案