2011-07-25 49 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; 
}