Pregunta

Puedo agregar un pequeño botón cruzado que se usa para borrar todo el texto en un solo clic en un UITextField con el siguiente código.

textField.clearButtonMode = UITextFieldViewModeWhileEditing;

Yo también implementé UITextFieldDelegate.

Quiero activar/desactivar el botón de barra correcto del UINavigationBar Según los cambios en mi UITextField. La regla es simple: si el campo de texto tiene al menos un carácter, solo habilite el botón, de lo contrario, desactíquelo.

Implementé el UITextFieldMétodo de delegado textField:shouldChangeCharactersInRange: Para verificar constantemente el requisito y actualizar el estado del botón.

Ahora mi problema es, cuando hago clic en el pequeño botón cruzado en el campo de texto, el método textField:shouldChangeCharactersInRange: no se llama. Entonces falta la acción requerida. ¿Cómo puedo identificar el evento presionado del botón transparente?

Algunas fotos para mostrar de lo que estoy hablando.

Etapa inicial: aquí, el botón "Hecho" está deshabilitado porque no hay letras en el campo de texto

Al escribir una carta, el botón "Hecho" está habilitado

Ahora, si hago clic en el botón Borrar, el botón "Hecho" todavía está habilitado. Esto está mal.

¿Fue útil?

Solución

Utilizar el método delegado textViewShouldClear::

Pregunta al delegado si se debe eliminar el contenido actual del campo de texto.

- (BOOL)textFieldShouldClear:(UITextField *)textField

Parámetros

textField

El campo de texto que contiene el texto.

Valor de retorno

YES Si el contenido del campo del texto se borrará; de lo contrario, NO.

Discusión

El campo de texto llama a este método en respuesta al usuario presionando el botón Borrar incorporado. (Este botón no se muestra por defecto, pero se puede habilitar cambiando el valor en el clearButtonMode propiedad del campo de texto.) Este método también se llama cuando comienza la edición y el clearsOnBeginEditing La propiedad del campo de texto se establece en YES.

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

* Available in iOS 2.0 and later.

Declarado en uitextfield.h

Otros consejos

Puedes usar textFieldShouldClear: Delegue el método para manejar cuando el usuario aprovecha el botón Borrar.

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