2011-07-25 12 views
18

Jak mogę wykryć przycisk Backspace wciśnięty na UIKeyboard?Jak wykrywać dotyk przycisku "backspace" na UITextField?

enter image description here

dzięki


EDIT: Czy istnieje jakiś delegat klawiatura, która zwraca wartość klucza wciśnięty?

+0

Podobne pytanie tutaj: http://stackoverflow.com/questions/4351358/detect-backspace-in-uitextfield-on-a-blank-textfield/4355245#4355245 –

+0

do pustej UITextField, wykrywanie Backspace to sprawdzić : - https://stackoverflow.com/a/45327651/996796 –

Odpowiedz

55

jeśli UITextField jest pusty, metoda shouldChangeTextInRange delegat nie nazywa Można podklasę UITextField i zastąpić tę metodę :

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

od UITextField jest zgodny z protokołem UITextInput, metoda ta jest realizowana, a można zastąpić go wykryć, kiedy zostanie naciśnięty klawisz backspace. Następnie można napisać własną metodę protokołu/delegowania, aby ostrzec użytkownika o niestandardowym delegowaniu pola tekstowego, jeśli wykryty zostanie obszar Backspace.

+4

Moim zdaniem, to powinna być zaakceptowana odpowiedź! –

+1

+1 Ta odpowiedź jest znacznie prostsza niż na http://stackoverflow.com/questions/1977934/detect-backspace-in-uitextfield. – ide

+2

To nie działa na iOS8 - jest błąd Apple. Mam nadzieję, że zostanie on naprawiony w iOS8.1 –

4

Tymczasowe jestem wstawienie char zerowa przestrzeń na textFieldDidBeginEditing

textField.text = @"\u200B"; 

na Backspace, że to usunąć znaki, ale graficznie to samo!

To hack, to działa, ale to ukryć zastępczy tekst ... nie dobrze ...

28

Przede wszystkim Twój UIViewController, który odwołuje się do UITextField, musi być zgodny z UITextFieldDelegate . Następnie ustaw swoją klasę jako delegate na UITextField (np. [myTextField setDelegate:self]). Następnie w klasie dodaj następujące elementy. Kiedy ciąg "" jest wysyłany jako replacementString, wiesz, że jest backspace.

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