【问题标题】:How to detect UIKeyboard "backspace" button touch on UITextField? [duplicate]如何检测 UITextField 上的 UIKeyboard“退格”按钮触摸? [复制]
【发布时间】:2011-10-12 16:45:52
【问题描述】:

如何检测UIKeyboard 上按下的退格键?

谢谢


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

【问题讨论】:

标签: iphone objective-c uitextfield uikeyboard


【解决方案1】:

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

-(void)deleteBackward;
{
    [super deleteBackward];
    NSLog(@"BackSpace Detected");
}

由于 UITextField 符合 UITextInput 协议,所以实现了这个方法,你可以重写它来检测何时按下退格键。 然后,您可以编写自己的协议/委托方法,以在检测到退格时提醒您的自定义文本字段委托。

【讨论】:

  • 在我看来,这应该是公认的答案!!!
  • +1 这个答案比stackoverflow.com/questions/1977934/… 的答案简单得多。
  • 这在 iOS8 上不起作用 - 存在 Apple 错误。希望它会在 iOS8.1 中得到修复
  • 在IOS8.1上还是不行,你有没有找到另一个解决方案@AndrewBennett?
【解决方案2】:

首先,引用UITextFieldUIViewController 需要符合UITextFieldDelegate protocol。然后将您的课程设置为delegateUITextField(例如[myTextField setDelegate:self])。然后在您的班级中添加以下内容。当 "" 字符串作为replacementString 发送时,您知道它是退格键。

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

【讨论】:

    【解决方案3】:

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

    textField.text = @"\u200B";
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-19
      • 2011-06-11
      相关资源
      最近更新 更多