¿Cómo puedo detectar cuando el teclado se muestra y se oculta en mi aplicación?
ios
iphone
iphone-sdk-3.0
usuario198725878
fuente
fuente
Respuestas:
En el método ViewDidLoad de su clase configurado para escuchar mensajes sobre el teclado:
Luego, en los métodos que especifique (en este caso
keyboardDidShow
ykeyboardDidHide
) puede hacer algo al respecto:fuente
UITextFieldDelegat
e, luego implemente eltextFieldShouldReturn:
método. Obtendrá el quetextField
acaba de ingresar como un argumento, que puede comparar con sus propios campos de texto y desplazarsescrollView
para que se muestre el campo de texto apropiado.Simplemente tendrá
addObserver
enviewDidLoad
. Pero teneraddObserver
adentroviewWillAppear
yremoveObserver
adentroviewWillDisappear
previene fallas raras que ocurren cuando cambia su vista.Rápido 4.2
Swift 3 y 4
Swift mayor
fuente
deinit
esta manera:deinit { NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillShowNotification, object: nil) NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillHideNotification, object: nil) }
deinit { NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIKeyboardWillShow, object: nil) NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIKeyboardWillHide, object: nil) }
Swift 3:
fuente
Rápido 4:
A continuación, agregue un método para dejar de escuchar las notificaciones cuando finalice la vida del objeto: -
fuente
+=
parece hacer que las inserciones sean cada vez más grandes.UIResponder.keyboardWillShowNotification
yUIResponder.keyboardWillHideNotification
, y la tecla de información del teclado esUIResponder.keyboardFrameBeginUserInfoKey
.Rápido - 4
fuente
Consulte la sección Administración del teclado de la "Guía de programación de edición, edición y texto" para obtener información sobre cómo rastrear el teclado que se muestra u oculta, y cómo mostrarlo / descartarlo manualmente.
fuente
Querrá registrarse para las 2 notificaciones del teclado:
Excelente publicación sobre cómo ajustar su TextField al teclado: http://iosdevelopertips.com/user-interface/adjust-textfield-hidden-by-keyboard.html
fuente
En Swift 4.2, los nombres de las notificaciones se han movido a un espacio de nombres diferente. Entonces ahora es
fuente
Rápido 5
Las respuestas anteriores son correctas. Aunque preferiría crear un ayudante para terminar el
notification's observers
.El beneficio:
Código de muestra:
Cómo utilizar:
}
fuente
Rápido 4 -
dd 20 october 2017
fuente
Si tiene más de uno
UITextField
y necesita hacer algo cuando (o antes) el teclado aparece o desaparece, puede implementar este enfoque.Agregue
UITextFieldDelegate
a su clase. Asignar contador de enteros, digamos:Ponga este contador a cero en algún lugar
viewDidLoad
. Luego, implementetextFieldShouldBeginEditing
ytextFieldShouldEndEditing
delegue métodos.En el primero, agregue 1 para editCounter. Si el valor de editCounter se convierte en 1, esto significa que aparecerá el teclado (en caso de que devuelva YES). Si editCounter> 1, esto significa que el teclado ya está visible y otro UITextField mantiene el foco.
En
textFieldShouldEndEditing
restar 1 de editCounter. Si obtiene cero, el teclado se cerrará; de lo contrario, permanecerá en la pantalla.fuente
Puede usar la biblioteca KBKeyboardObserver . Contiene algunos ejemplos y proporciona una interfaz sencilla.
fuente
Hay un CocoaPods para facilitar la observación
NSNotificationCentr
de la visibilidad del teclado aquí: https://github.com/levantAJ/Keyhipod 'Keyhi'
fuente
Entonces, esta es la verdadera respuesta ahora.
fuente