iphone objective-c uitextfield uikeyboard

iphone - ¿Cómo detectar el botón de "retroceso" de UIKeyboard al tocar en UITextField?



objective-c (3)

Esta pregunta ya tiene una respuesta aquí:

¿Cómo puedo detectar el botón de retroceso presionado en UIKeyboard ?

Gracias

EDIT : ¿Hay algún delegado de teclado que devuelva el valor de la tecla presionada?


En primer lugar, su UIViewController que hace referencia al UITextField necesita cumplir con el protocol UITextFieldDelegate . Luego configure su clase como delegate al UITextField (por ejemplo, [myTextField setDelegate:self] ). Luego en tu clase agregas lo siguiente. Cuando se envía una cadena de "" como replacementString la cadena, usted sabe que es un retroceso.

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


Si el UITextField está vacío, el método delegado shouldChangeTextInRange no se llama. Puede subclase UITextField y anular este método:

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

Dado que UITextField es compatible con el protocolo UITextInput, este método se implementa, y puede anularlo para detectar cuándo se presiona el retroceso. Luego, puede escribir su propio método de protocolo / delegado para alertar a su delegado de campo de texto personalizado si se detecta el retroceso.


Temporal estoy insertando un carácter de espacio cero en textFieldDidBeginEditing

textField.text = @"/u200B";

en el retroceso, elimina los caracteres, pero gráficamente es lo mismo!

Es un truco, funciona, pero oculta el texto del marcador de posición ... no es bueno ...