我有一个只接受数字的文本字段,但是它不接受delete键,所以一旦输入就不能删除任何东西。
我试着添加了NSCharacters,但我似乎找不出delete键的字符。
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if let x = string.rangeOfCharacter(from: NSCharacterSet.decimalDigits + Character.delete) {
return true
} else {
return false
}
}它运行正常,我只是不能退格,因为我不接受它在代码中。
发布于 2019-10-29 22:44:10
你在以错误的方式思考它。"Delete“在本例中不是字符:
您可以简单地额外检查替换字符串是否为空(deleting =将字符串的一部分替换为"nothing")。
if string.isEmpty {
return true
}但是,您的数字检查不正确,并且在粘贴(例如粘贴"1a")时会失败。您的代码正在检查新字符串是否包含数字。下面的代码检查除了数字之外没有其他字符。
return string.rangeOfCharacter(from: CharacterSet.decimalDigits.inverted) == nil这个检查实际上甚至对空字符串也有效。
https://stackoverflow.com/questions/58609617
复制相似问题