Ios 允许使用字符集退格
我在删除文本字段时遇到问题。所以我有一个只允许字母的人名文本字段。但当我点击删除或退格键时,它似乎不起作用。这就是我的代码的样子Ios 允许使用字符集退格,ios,swift,uitextfield,Ios,Swift,Uitextfield,我在删除文本字段时遇到问题。所以我有一个只允许字母的人名文本字段。但当我点击删除或退格键时,它似乎不起作用。这就是我的代码的样子 func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { let set = CharacterSet.letter return (string.ra
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let set = CharacterSet.letter
return (string.rangeOfCharacter(from: set) != nil)
}
我不知道为什么退格/删除不起作用 当用户点击退格键时,
string
将是空字符串。因此rangeOfCharacter
将为nil
,因此您的代码返回false
以防止退格工作
试试这个:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
return string.isEmpty || string.rangeOfCharacter(from: CharacterSet.letter) != nil
}
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
}
如果正则表达式的
rangeOfCharacter
为nil
则点击backspace检查backspace code并返回false,否则返回true
试试这个:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
return string.isEmpty || string.rangeOfCharacter(from: CharacterSet.letter) != nil
}
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
}
谢谢@rmaddy。我在这里呆了一段时间,想知道为什么它不起作用,谢谢。