答案 0 :(得分:2)
UITextField
符合UITextInput
协议,该协议继承自UIKeyInput
协议。
UIKeyInput
协议具有func deleteBackward()
功能,当用户按下键盘上的删除按钮时会调用该功能。
创建一个继承自UITextField
的自定义子类,并在该函数内完成您的工作。可以通过自定义委托或其他方式通知您的事件处理程序。
class YourCustomTextField: UITextField {
override func deleteBackward() {
super.deleteBackward()
// do your work here
}
}
请记得致电super.deleteBackward()
,以便在用户点按删除按钮时删除单个字符或所选字符范围。如果你没有打电话,当用户点击删除按钮时,文字就不会改变。
答案 1 :(得分:1)
比较替换后的textField和结果字符串的字符数
var txtBeforeUpdate:NSString = textField.text as NSString!
var txtAfterUpdate = txtAfterUpdate.replacingCharacters(in: range, with: string) as NSString
也是最好的方式:
let char = string.cString(using: String.Encoding.utf8)!
let isBackSpace = strcmp(char, "\\b")
if (isBackSpace == -92) {
print("Backspace was pressed")
}