Digamos que tengo el siguiente código:
IBOutlet UITextField* nameTextField;
IBOutlet UILabel* greetingLabel;
Me gustaría greetingLabel
leer "Hola [nameTextField]" tan pronto como el usuario presione cualquier tecla.
Lo que necesito básicamente es el iPhone equivalente al método delegado Cocoa controlTextDidChange
.
El textField:shouldChangeCharactersInRange:
método delegado se llama cada vez que se pulsa una tecla:
- (BOOL) textField:(UITextField *)textField
shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string
El argumento de cadena devuelve el carácter que se presiona. Sin embargo, el textField
valor actual ( nameTextField.text
) permanece en blanco.
¿Que me estoy perdiendo aqui? (Me gustaría nameTextField
reflejar la cadena exacta que el usuario ha ingresado hasta ahora).
fuente
[textField addTarget:self action:@selector(textFieldEditingChanged:) forControlEvents:UIControlEventEditingChanged]
;).puede registrar una acción para el evento UIControlEventEditingChanges en el campo de texto:
...
fuente
UITextField
tiene una notificaciónUITextFieldTextDidChange
que se disparará cada vez que el texto cambie si te registras. Simplemente regístrese para recibir esa notificación y, en el método llamado por la notificación, cambie el texto de la etiqueta.Para agregar a esto, el objeto pasado a su controlador de notificaciones tendrá el texto del
UITextField
.Espero que ayude.
fuente