Acción cuando se presiona el pequeño button cruzado de UITextField.

Puedo agregar un pequeño button cruzado que se utiliza para borrar todo el text con un solo clic en un UITextField con el siguiente código.

 textField.clearButtonMode = UITextFieldViewModeWhileEditing; 

También implementé UITextFieldDelegate .

Quiero activar / desactivar el button de la barra derecha de UINavigationBar acuerdo con los cambios en mi UITextField . La regla es simple: si el campo de text tiene al less un carácter, simplemente habilite el button, o deshabilítelo.

Implementé el método delegado de textField:shouldChangeCharactersInRange: para comprobar constantemente el requisito y actualizar el estado del button.

Ahora mi problema es que cuando hago clic en el pequeño button de cruz en el campo de text, el método textField:shouldChangeCharactersInRange: no se llama. Entonces falta la acción requerida. ¿Cómo puedo identificar el evento de golpe del button de borrar?

Algunas fotos para mostrar de qué estoy hablando.

Etapa inicial: aquí, el button "Listo" está deshabilitado porque no hay letras en el campo de text

Al escribir una letra, el button "Listo" está habilitado

Ahora, si hago clic en el button de borrar, el button "Listo" todavía está habilitado. Esto está mal.

Use el método delegate textViewShouldClear: ::

Pregunta al delegado si los contenidos actuales del campo de text deben eliminarse.

 - (BOOL)textFieldShouldClear:(UITextField *)textField 

Parámetros

 textField 

El campo de text que contiene el text.

Valor de retorno

YES si los contenidos del campo de text deben borrarse; de lo contrario, NO .

Discusión

El campo de text llama a este método en respuesta al usuario presionando el button de borrar incorporado. (Este button no se muestra de forma pnetworkingeterminada pero se puede habilitar cambiando el valor en la propiedad clearButtonMode del campo de text). Este método también se clearsOnBeginEditing cuando comienza la edición y la propiedad clearsOnBeginEditing del campo de text se establece en YES .

La implementación de este método por parte del delegado es opcional. Si no está presente, el text se borra como si este método hubiera devuelto YES . Disponibilidad

 * Available in iOS 2.0 and later. 

Declarado en UITextField.h

Puede usar textFieldShouldClear: delegate method para manejar cuando el usuario toca el button Borrar.