Tengo un UITextFieldDelegate que hace un montón de validación en la entrada del usuario para determinar si se les debe permitir o no finalizar la edición. En un ejemplo particular, no es válido dejar el campo en blanco.Detectando cuando el texto de UITextField ha cambiado debido a un movimiento de deshacer?
En este momento estoy usando textField:shouldChangeCharactersInRange:replacementString:
para validar el ingreso de texto después de cada edición por parte del usuario.
El problema es este: si el usuario borra el campo (con el pequeño botón "x"), el código de validación pasa al modo "inválido" y evita que el usuario se desplace hasta que haya ingresado un texto válido. Si el usuario sacude el teléfono para recuperar el texto anterior, no se vuelve a llamar al shouldChangeCharactersInRange
y el delegado permanece en el estado "no válido" en lugar de reconocer que todo vuelve a estar bien.
No estoy seguro si lo estoy usando correctamente, pero parece que la maquinaria incorporada UITextFieldDelegate no puede hacer frente a los cambios de texto debido a deshacer/rehacer.
¿Cuál es la mejor manera de lograr una validación adecuada en este escenario? ¿Debo realmente necesitar la subclase UITextField para implementar motionEnded:withEvent:
? Parece que las cosas de manejo de edición en UITextField realmente deberían ser independientes de si el usuario realmente lo tipeó o si sucedió debido a la acción de deshacer, por lo que sería una pena si realmente tuviera que seguir esa ruta.
Excelente, gracias. Funciona muy bien y es mucho más simple que implementar 'shouldChangeCharactersInRange' y' textFieldShouldClear', que es lo que estaba haciendo antes. ¡Suspiro de alivio! – glenc