2011-07-25 20 views
18

如何检测按下UIKeyboard的退格按钮?如何检测UIKeyboard“退格”按钮触摸UITextField?

enter image description here

感谢


编辑:是否有返回键压数值的任何键盘代表?

+0

类似的问题在这里:http://stackoverflow.com/questions/4351358/detect-backspace-in-uitextfield-on-a-blank-textfield/4355245#4355245 –

+0

空的UITextField,检测退格检查此: - https://stackoverflow.com/a/45327651/996796 –

回答

55

如果的UITextField是空的,shouldChangeTextInRange委托方法不叫 你也可以继承的UITextField和重写此方法:

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

自的UITextField符合于UITextInput协议,该方法被实现,并且可以覆盖被按下退格键时,它检测到。 然后,如果检测到退格,您可以编写自己的协议/委托方法来提醒您的自定义文本字段委托。

+4

在我看来,这应该是被接受的答案! –

+1

+1这个答案比http://stackoverflow.com/questions/1977934/detect-backspace-in-uitextfield的答案简单得多。 – ide

+2

这不适用于iOS8 - 有一个苹果的错误。希望它会在iOS8.1中得到修复。 –

4

临时我在textFieldDidBeginEditing

textField.text = @"\u200B"; 

上退格键插入一个零空间字符,它删除字符,但图形是一样的!

这是一个黑客,它的工作原理,但它隐藏占位符文本......不好......

28

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

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