有没有办法获取用户何时按下UITextField上的退格键的通知,即使该字段为空?
当用户在空字段上退格时,我希望能够触发一些代码。
答案 0 :(得分:0)
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(keyPressed:) name: UITextFieldTextDidChangeNotification object: nil];
这是用户按下每个键的通知。然后你必须弄清楚(我认为在通知中是一个属性)按下了哪个键。
或者您可以使用textfield委托功能
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
找出按下的键
答案 1 :(得分:0)
由于您需要检测而不是文本被删除,但是当按下退格键时,您需要做的不仅仅是实现UITextFieldDelegate
阅读this blog post,了解UITextField
如何将所有UIKeyInput
方法转发给私有类UIFieldEditor
。编写器在运行时动态地子类UIFieldEditor
以检测这些事件。
希望这能指出你正确的方向!
答案 2 :(得分:0)
我可以想到一种技术可以让你得到你想要的东西,但它会采取一些代码。实质上,始终在字符串的前面保留一个Unicode“空格”字符。我没有我的书,但你可以使用一个非常薄的空间角色。
您将把大部分代码放在这里:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
答案 3 :(得分:0)
这将检测退格。现在,您可以在按下退格键时执行任何操作。
- (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;
}