Pregunta

Vamos a decir que tengo el siguiente código:

IBOutlet UITextField* nameTextField;
IBOutlet UILabel* greetingLabel;

Me gustaría que el greetingLabel para leer "Hola [nameTextField]" tan pronto como el usuario presiona cualquier tecla.

Lo que necesito es básicamente el equivalente de iPhone el método delegado controlTextDidChange cacao.

El método textField:shouldChangeCharactersInRange: delegado se llama cada vez que se produce una pulsación de tecla:

- (BOOL)              textField:(UITextField *)textField
  shouldChangeCharactersInRange:(NSRange)range     
              replacementString:(NSString *)string

El argumento de cadena devuelve el carácter que se presiona. El valor de la textField real (nameTextField.text) permanece en blanco sin embargo.

¿Qué me estoy perdiendo aquí? (Me gustaría nameTextField para reflejar la secuencia exacta que el usuario ha introducido hasta ahora).

¿Fue útil?

Solución

Resulta que, la manera más fácil de hacer esto es mediante el Interface Builder:

  • Añadir un IBAction (a la ViewController, por ejemplo, como en este caso)
  • Ctrl-Click (o clic derecho) en la UITextField en Interface Builder
  • Conectar el evento "Edición Changed" para el archivo de IBAction del propietario añade en el primer paso.

funciona como un encanto :) (No puedo creer que pasé muchos días en esto, y ahora a darse cuenta de que la solución era mucho más sencillo de lo que pensaba: P)

Otros consejos

se podría registrar una acción para los UIControlEventEditingChanges de eventos en el campo de texto:

[nameTextField addTarget:self action:@selector(updateLabelUsingContentsOfTextField:) forControlEvents:UIControlEventEditingChanged];

...

// TODO: error checking

- (void)updateLabelUsingContentsOfTextField:(id)sender {

    greetingLabel.text = [NSString stringWithFormat:@"Hello %@", ((UITextField *)sender).text];

}

UITextField tiene una UITextFieldTextDidChange notificación que será despedido cada vez que cambia el texto si se registra para ello. Registrate que la notificación y en el método llamado por la notificación, cambiar el texto de la etiqueta.

Para añadir a esto, el objeto pasado a su controlador de notificación tendrá el texto de la UITextField.

Espero que ayude.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top