如何检测UITextField上的UIKeyboard"退格"按钮?

elp*_*elp 19 iphone objective-c uitextfield uikeyboard

如何检测按下的退格按钮UIKeyboard

在此输入图像描述

谢谢


编辑:是否有任何键盘委托返回按键值?

Lom*_*baX 59

如果UITextField为空,则不调用shouldChangeTextInRange委托方法您可以继承UITextField并覆盖此方法:

-(void)deleteBackward;
{
    [super deleteBackward];
    NSLog(@"BackSpace Detected");
}
Run Code Online (Sandbox Code Playgroud)

由于UITextField符合UITextInput协议,因此实现了此方法,您可以覆盖它以检测何时按下退格.然后,如果检测到退格,您可以编写自己的协议/委托方法来警告自定义文本字段委托.

  • 在我看来,这应该是接受的答案! (4认同)
  • 这在iOS8上不起作用 - 这是一个Apple bug.希望它能在iOS8.1中得到修复 (2认同)

小智 29

首先,你的UIViewController参考UITextField需要符合UITextFieldDelegate protocol.然后设置你的类为delegateUITextField(例如[myTextField setDelegate:self]).然后在您的课程中添加以下内容.当发送一串""时,replacementString你知道它是退格.

(BOOL)textField:(UITextField *)textField 
      shouldChangeCharactersInRange:(NSRange)range 
      replacementString:(NSString *)string
{                
    if ([string isEqualToString:@""]) {
        NSLog(@"Backspace");            
    }
    return YES;
}
Run Code Online (Sandbox Code Playgroud)


elp*_*elp 5

临时我正在插入一个零空格字符 textFieldDidBeginEditing

textField.text = @"\u200B";
Run Code Online (Sandbox Code Playgroud)

在退格键上,它会删除那个字符,但在图形上它是一样的!

这是一个黑客,它有效,但它隐藏了占位符文本......不好......