¿Es posible obtener el UITextField o UITextView actualmente activo en un UIView, para poder ocultar el teclado con [text resignFirstResponder];
?¿Cómo obtener el actualmente activo UITextField/UITextView y resignFirstResponder?
Respuesta
a partir de iOS 2.0 y luego, hay una manera fácil de descartar el teclado sin hav para rastrear el control actualmente activo, o iterar a través de todos los controles disponibles, o usar un UITextFieldDelegate
.
[self.view endEditing:YES]
A partir de los documentos:
endEditing:
que la vista (o uno de sus campos de texto incrustados) a dimisión el primer estado que responde.
- (BOOL
) endEditing :(BOOL
) fuerzaParámetros
fuerza
EspecificarYES
para forzar al primer nivel de respuesta a renunciar, sin importar si se quiere hacer de manera .
Valor de retorno
YES
si la vista renunció el primer estado de respuesta oNO
si no lo hizo.Discusión
Este método se ve en la vista actual y su jerarquía subvista para el campo de texto que es actualmente el primer nivel de respuesta. Si encuentra uno, le pide que renuncie al campo de texto como primera respuesta. Si el parámetro force se establece enYES
, el campo de texto nunca se pedirá; está obligado a renunciar.
Puede seguir si desea buscar específicamente el campo de texto del respondedor. Get the current first responder without using a private API
también se puede utilizar siguiente código si solo deseas despedir campo de texto activo teclado-
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
No hay forma de llegar directamente qué objeto es el actual primer nivel de respuesta (que yo sepa, al menos) sin probarlos individualmente. Lo que puede hacer es crear un método que contiene todos los subvistas la que posiblemente podría ser el primero en responder activo, de la siguiente manera:
- (void)dismissKeyboard {
if (myTextField1.isFirstResponder) {
[myTextField1 resignFirstResponder];
}
else if (myTextField2.isFirstResponder) {
[myTextField2 resignFirstResponder];
}
else if (myTextField3.isFirstResponder) {
[myTextField3 resignFirstResponder];
}
else if (myTextField4.isFirstResponder) {
[myTextField4 resignFirstResponder];
}
}
En realidad, sin embargo, tienden a hacerlo de esta manera, sin antes comprobar si una determinada UIView es el actual primer nivel de respuesta, y no creo que haya ningún impacto en el rendimiento apreciable/tema (que me he dado cuenta de todos modos):
- (void)dismissKeyboard {
//Send resignFirstResponder message to all possible first responders...
[myTextField1 resignFirstResponder];
[myTextField2 resignFirstResponder];
[myTextField3 resignFirstResponder];
[myTextField4 resignFirstResponder];
}
Espero que ayude ...
Esto no es necesario, [self.view endEditing: YES] ; va a hacer –
Este código SWIFT trabaja en la búsqueda del primer nivel de respuesta:
func findActiveResponderFrame(view:UIView)->UIView?{
if view.isFirstResponder() {
return view
} else {
for sub in view.subviews {
if let subView = sub as? UIView,
found = findActiveResponderFrame(subView){
return found
}
}
}
return nil
}
Actualización para Swift 3
Esta función se esconde el teclado de cualquier campo de texto activo en Swift 3:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.view.endEditing(true)
}
- 1. UISearchBar y resignFirstResponder
- 2. JDesktopPane: cómo obtener el marco activo
- 3. teclado del iPhone, botón Listo y resignFirstResponder
- 4. ¿Cómo obtener "editor activo" en el plugin de Eclipse?
- 5. resignFirstResponder entendimiento con UITextField
- 6. Xcode 4: ¿Puedo obtener una ruta al archivo actualmente activo a través de AppleScript?
- 7. ¿Cómo obtener la NSOperation actualmente en ejecución?
- 8. Vim: cómo obtener el modo Actualmente estoy en
- 9. ResignFirstResponder no descarta el teclado (iPhone)
- 10. Ejemplo de UITextField ResignFirstResponder con Monotouch
- 11. ¿Cómo obtener el rol del usuario actualmente conectado en wordpress?
- 12. Cómo encontrar el control activo anterior: Delphi
- 13. Cómo obtener la identificación del usuario actualmente registrado en pyrocms?
- 14. UITableView reloadData causa que UITextField resignFirstResponder
- 15. iPad popover textfield - resignFirstResponder no descarta el teclado
- 16. Cómo utilizar el registro activo sin rieles
- 17. cómo obtener los datos de usuario actualmente registrados zend framework
- 18. ¿Cómo puedo obtener una lista de usuarios del directorio activo?
- 19. ¿Cómo obtener el conjunto de comprobaciones de advertencia actualmente habilitadas en el módulo perl?
- 20. Cómo obtener actualmente el nombre de testcase de test en el unittest
- 21. ¿Mantener el objeto sobre el teclado en caso de becomeFirstResponder o resignFirstResponder?
- 22. Rails Idea: obtener objeto del usuario actualmente conectado?
- 23. MVC3 + Cómo obtener el nombre de usuario del usuario registrado actualmente
- 24. ¿Obtener instancia de la actividad que se está ejecutando actualmente?
- 25. Obteniendo el elemento seleccionado actualmente en QTreeView
- 26. Yii - Obtener el mínimo, el máximo de una columna utilizando el registro activo
- 27. ¿Cómo obtener el idioma (configuración regional) que muestra actualmente la aplicación de Android?
- 28. Obtener PID de la aplicación actualmente en ejecución
- 29. ¿Cómo encontrar la dirección IP del dispositivo activo AirPlay?
- 30. ¿Cómo obtener el rol del usuario actualmente conectado en Drupal 7?
posible duplicado de [¿Cómo puedo determinar? el UITextField seleccionado actualmente?] (http://stackoverflow.com/questions/8956704/how-can-i-determine-the-uitextfield- current -selected) –