2010-04-07 24 views
12

Cuando creo UITextField dentro de Interface Builder, puedo acceder a la pestaña Eventos, que tiene eventos como Valor cambiado, Touch cancel, Touch drag, etc. Puedo asignar mis propios métodos a cada uno de esos eventos. ¿Cómo puedo hacer lo mismo cuando creo UITextField programáticamente con alloc?Eventos UiTextField

+0

Hola, he creado un UITextField en Interface Builder y quiero registrar UIControlEventValueChanged. ¿Cómo lo haces? ¿Cómo defines esa función? – Namratha

Respuesta

14

Consulte la documentación de Apple para UIControl. Después de inicializar su textField, llame addTarget:action:forControlEvents:

ejemplo para el caso de toque que termina una sesión de edición

[textField addTarget:self action:@selector(handleTouchValueChanged:) forControlEvents: UIControlEventEditingDidEnd] 
+0

gracias, que funcionó – Mike

+9

Esto no funciona, debe usar UIControlEventEditingChanged –

11

En lugar de UIControlEventValueChanged, se debe utilizar UIControlEventEditingChanged:

[_titleTextField addTarget:self action:@selector(handleTitleValueChanged:) forControlEvents:UIControlEventEditingChanged]; 
+1

de la respuesta del hajikelist (pertenece aquí como un comentario en lugar de ser una respuesta): UIControlEventEditingChanged se activa siempre que el usuario cambie el valor [sincrónico con tipeo o teclado] que podría causar golpes extra a su rutina de manejo de datos, si está guardando valores basados ​​en ese evento, esperando que sea algún tipo de valor final de la entrada del usuario ... (podría terminar con un comportamiento inesperado, como tener varias copias guardadas para cada textfield). – GeneralMike

3

UIControlEventEditingChanged activa siempre que el usuario cambia el valor [ sincrónico con tipeo o teclado] que podría causar accesos adicionales a su rutina de controlador de datos, si está guardando valores basados ​​en ese evento, esperando que sea algún tipo de valor final de la entrada del usuario ...

+1

Un buen punto, pero probablemente debería ser un comentario en una de las otras respuestas en lugar de una respuesta en sí misma, ya que no especificó una alternativa a esas respuestas. – GeneralMike