2011-06-08 25 views
7

Cuando se presiona "Listo", sé que se llama textViewDidEndEditing:. También a veces es llamado por otras acciones.Manejo del botón 'Hecho' en el teclado fuera de textViewDidEndEditing

Quiero un método que solo se ejecuta cuando se presiona "Hecho" - exclusivamente. He estado leyendo fragmentos de código, pero no veo a nadie haciendo esto. No estoy usando ningún XIB para mi vista, por cierto.

¿Esto es posible?

+0

http://stackoverflow.com/questions/6106761/uitextview-textviewshouldendediting-never-called/6107507#6107507 Consulte esto –

Respuesta

1

En primer lugar, textFieldDidEndEditing se invoca cuando el usuario pulsa el botón DONE. Se invoca tan pronto como toca algo después de la edición.

por tener un botón exclusivo 'Hecho' puede crear una clave de Hecho como UIBarButtonItem, y escribir un IBAction como

- (IBAction) doneClicked:(id)sender 

La siguiente línea asigna la clave como la tecla de retorno Hecho.

textField.returnKeyType = UIReturnKeyDone; 

Puede comprobar si la tecla se ha pulsado Hecho en el TextFieldDidEndEditing ... También puede utilizar otro botón, y devolverlo en su lugar.

+0

Hola Legolas, Tal vez mi pregunta no estaba clara. Quiero ser capaz de manejar el evento del botón Hecho en el Teclado que se está presionando. ¿Hay alguna forma de atrapar este evento sin usar textViewDidEndEditing? Muchas gracias, Código –

+0

verifique mi respuesta actualizada. – Legolas

+0

@Legolas, su primera afirmación es incorrecta. Tocar otras vistas no roba automáticamente el estado de la primera persona que responde en el campo de texto que está editando actualmente; si eso fuera cierto, nunca podría escribir nada en el teclado. – jlehr

14

Una instancia de UITextField enviará un mensaje textFieldShouldReturn: a su delegado siempre que se presione la tecla Retorno. Si desea que su controlador reciba este mensaje, envíe un mensaje setDelegate: al campo de texto, pasando self como argumento (o conecte la toma de delegado del campo de texto al controlador en Interface Builder) e implemente el siguiente método en su clase de controlador :

- (BOOL)textFieldShouldReturn:(UITextField *)textField; 

Consulte la documentación del protocolo UITextFieldDelegate para obtener más información.

Cuestiones relacionadas