Acción cuando se presiona el pequeño botón cruzado de UITextfield
-
25-10-2019 - |
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 UITextField
Mé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.
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 elclearsOnBeginEditing
La propiedad del campo de texto se establece enYES
.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.