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í:
- Detectar retroceso en UITextField 24 respuestas
¿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 ...