允许使用字符集退格

时间:2019-01-30 22:22:43

标签: ios swift uitextfield

我在删除文本字段时遇到问题。所以我有一个只允许字母的人名文本字段。但是,当我点击删除或退格键时,它似乎不起作用。这就是我的代码。

 func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    let set = CharacterSet.letter
    return (string.rangeOfCharacter(from: set) != nil)
}

我不确定为什么退格键/删除键不起作用。

2 个答案:

答案 0 :(得分:3)

当用户点击退格键时,string将为空字符串。因此rangeOfCharacter将是nil,因此您的代码将返回false,从而使退格键无法正常工作。

尝试一下:

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    return string.isEmpty || string.rangeOfCharacter(from: CharacterSet.letter) != nil
}

答案 1 :(得分:0)

点击退格键以检查退格代码,如果正则表达式的rangeOfCharacternil,则返回false,否则返回true。

尝试一下:

        let  char = text.cString(using: String.Encoding.utf8)!
        let isBackSpace = strcmp(char, "\\b")
        if (isBackSpace == -92) {
        }else if text.range(of: kRangeWithoutSpace, options:.regularExpression) == nil {
           return false
        }