¿Hay alguna manera de ocultar el teclado cuando se presiona un botón de borrar de UITextField
?Ocultando el teclado cuando se presiona el botón borrar en UITextField
Respuesta
Sí, lo hay, aunque sospecho que hacerlo violaría las Pautas de interfaz humana de Apple.
Para hacerlo, agregue el siguiente método al archivo de implementación de su controlador de vista. Luego, convierta el controlador de visualización en el delegado de su campo de texto.
- (BOOL) textFieldShouldClear:(UITextField *)textField{
[textField resignFirstResponder];
return YES;
}
La desventaja de este enfoque es que si alguna vez desea evitar que el campo de texto de la limpieza, el código se vuelve desordenado. En cambio, puede tratar de definir un método personalizado y luego conectarlo al método valueDidChange
y verificar si hay un valor vacío.
-(IBAction)hideKeyboardFromTextField:(id)sender{
//TODO: Check if the previous value was longer than one character to differentiate
//between backspace and clear.
//check if the editing caused the box to be empty
if([[sender value] isEqualToString:@""] || [sender value] == nil)
[sender resignFirstResponder];
}
}
El problema aquí es que no se puede diferenciar fácilmente entre un golpecito en el botón clara y un toque en el botón de borrar cuando hay un carácter en el UITextField.
Como dije al principio de mi respuesta, esto no es aconsejable en primer lugar y como las respuestas aquí lo han demostrado, no es tan fácil de implementar. No creo que valga la pena, teniendo en cuenta la dificultad que implica y el hecho de que no da como resultado una experiencia de usuario óptima.
Yep. Llame al resignFirstResponder
en el campo de texto en el método textFieldShouldClear:
del delegado.
En UITextFieldDelegate
- (BOOL)textFieldShouldClear:(UITextField *)textField { [textField resignFirstResponder]; return YES; }
Pero hay un problema con esto. Del manual, "El campo de texto llama a este método en respuesta al usuario que presiona el botón claro integrado. (Este botón no se muestra de manera predeterminada, pero se puede habilitar cambiando el valor en la propiedad clearButtonMode del campo de texto). Este método también se invoca cuando comienza la edición y la propiedad clearsOnBeginEditing del campo de texto se establece en SÍ. "
Tenga en cuenta que este método se invoca cuando comienza la edición si cleararsOnBeginEditing está establecido en YES. Entonces, si llama a resignFirstResponder en este método, la edición no comenzará en realidad. Por lo tanto, debe configurar cleararsOnBeginEditing en NO. Obviamente, el campo de texto no se borrará cuando comience la edición.
Otro tema IMPORTANTE no directamente relacionado con la pregunta. Ocultar el teclado después de tocar el botón borrar no es un comportamiento familiar y Apple NO le gusta cambiar el comportamiento de los elementos estándar. Puede obtener un rechazo por esto.
probar este código:
[TextField performSelector:@selector(resignFirstResponder) withObject:nil afterDelay:0.1];
Este código está definitivamente trabajando para mí para ocultar el teclado mientras se corrige el contenido del campo de texto
- (BOOL)textFieldShouldClear:(UITextField *)textField
{
textField.text = @"";
return NO;
}
- 1. Borrar el foco EditText cuando se presiona el botón Atrás cuando el teclado está mostrando
- 2. iPhone realiza una acción cuando se presiona el botón borrar UITextField/UISearchBar
- 3. Evitar que el teclado predeterminado se muestre cuando se presiona UITextField
- 4. UITextField Cómo comprobar si se presiona una tecla de borrar
- 5. ocultando el teclado ios
- 6. El botón claro de UITextfield oculta el teclado cuando está dentro de UIScrollView
- 7. Cómo descartar el teclado cuando se presiona el botón 'Buscar' de UISearch Bar?
- 8. Aumenta continuamente el valor entero cuando se presiona el botón
- 9. guarda el estado cuando se presiona el botón Atrás
- 10. ¿Cómo puedo mover el botón Borrar en un UITextField?
- 11. habilitando el "botón de retorno" en un teclado UITextField (objetivo-c/iphone)
- 12. Repita una acción cuando se presiona el botón largo
- 13. Detectar cuando se presiona el botón de inicio iOS
- 14. setResult no funciona cuando se presiona el botón ATRÁS
- 15. ¿Cómo elimino una actividad cuando se presiona el botón Atrás?
- 16. cambiar el color del botón de texto cuando se presiona
- 17. Agregar el botón "Borrar" a un iPhone UITextField
- 18. ¿Cómo perder el foco de un texto de edición cuando se presiona el botón "acabado" en el teclado virtual?
- 19. UITableViewController y el teclado UITextField
- 20. El teclado UITextField no aparece
- 21. iOS evento cuando el teclado se oculta
- 22. Cancelar AsyncTask cuando el usuario presiona el botón
- 23. Agregar un botón cancelar al teclado UITextField
- 24. Ocultando el botón usando jquery
- 25. ¿Cómo abrir el teclado automáticamente en UITextField?
- 26. Cómo ocultar el Teclado de cuadro de texto cuando se presiona el botón "Hecho/Retorno" Xcode 4.2
- 27. Mantener el teclado suave abierto cuando se presiona la tecla enter
- 28. iPhone: ¿Se puede descartar el teclado con el botón de liberación de UITextField?
- 29. Borrar el color del botón en el campo de texto
- 30. Recibir notificaciones cuando el usuario presiona "Buscar" en el teclado en UISearchDisplayController
+1 para una respuesta detallada. gracias a todos. –