退格键iOS的通知

有没有办法获得用户何时按UITextField上的退格键的通知,即使该字段为空?

我希望能够在用户退出空字段时触发一些代码。

[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(keyPressed:) name: UITextFieldTextDidChangeNotification object: nil]; 

这是如何得到用户按下每个键的通知。 那么你必须弄清楚(我认为在通知中是一个属性)哪个键被按下。

或者你可以使用textfield委托function

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 

弄清楚什么键被按下

我可以想到一种技术来获得你想要的东西,但是它需要一些代码。 本质上,始终在string的前面保留一个Unicode“空格”字符。 我没有我的书,但有一个非常薄的空间字符,你可以使用。

你将把大部分代码放在这里:

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
  • 当字段开始编辑时,用空格前缀任何string
  • 当用户在shouldChangeCharactersInRange中看到附加文本时,将其追加。
  • 如果用户试图删除最后一个字符或包含它的范围,则返回NO,进行更改,然后添加前导空格char。
  • 当textField完成编辑时,删除前导空格

由于您不需要检测文本何时被删除,但是当按下退格键时,您需要比实现UITextFieldDelegate多一点。

阅读这篇博客文章 ,了解UITextField如何将所有UIKeyInput方法转发到私有类UIFieldEditorUIFieldEditor在运行时dynamic地将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; }