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 ...