有没有办法在用户按下 UITextField 上的退格键时获得通知,即使该字段为空?
当用户在空白字段上退格时,我希望能够触发一些代码。
由于您不需要检测文本何时被删除,而是何时按下退格键,因此您需要做的不仅仅是实现UITextFieldDelegate
。
阅读这篇博文,了解如何UITextField
将所有UIKeyInput
方法转发到私有类UIFieldEditor
。编写器在运行时动态子类UIFieldEditor
化以检测这些事件。
希望这会为您指明正确的方向!
这将检测退格。现在你可以在按下退格键时做任何事情。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (textField==txtMobileNo)
{
const char * _char = [string cStringUsingEncoding:NSUTF8StringEncoding];
int isBackSpace = strcmp(_char, "\b");
if (isBackSpace == -8) {
NSLog(@"isBackSpace");
if (textField.text.length == 9)
{
}
return YES; // is backspace
}
else if (textField.text.length == 10) {
return YES;
}
}
return NO;
}
我可以想出一种技术来获得你想要的东西,但它需要一些代码。本质上,始终在字符串的前面保留一个 Unicode“空格”字符。我没有带我的书,但是你可以使用一个非常薄的空间字符。
您将把大部分代码放在这里:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(keyPressed:) name: UITextFieldTextDidChangeNotification object: nil];
这就是您在用户按下的每个键时收到通知的方式。然后你必须弄清楚(我认为在通知中是它的一个属性)按下了哪个键。
或者您可以使用文本字段委托功能
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
找出按下了什么键