Comment puis-je détecter lorsque le clavier est affiché et masqué dans mon application?
ios
iphone
iphone-sdk-3.0
user198725878
la source
la source
Réponses:
Dans la méthode ViewDidLoad de votre classe configurée pour écouter les messages sur le clavier:
Ensuite, dans les méthodes que vous spécifiez (dans ce cas
keyboardDidShow
etkeyboardDidHide
), vous pouvez faire quelque chose à ce sujet:la source
UITextFieldDelegat
e, puis implémentez latextFieldShouldReturn:
méthode. Vous obtiendrez letextField
juste entré comme argument, que vous pourrez comparer à vos propres textFields et faire défiler lescrollView
afin que le textField approprié soit affiché.Vous aurez juste besoin
addObserver
deviewDidLoad
. Mais avoiraddObserver
inviewWillAppear
etremoveObserver
inviewWillDisappear
empêche les rares plantages qui se produisent lorsque vous changez de vue.Swift 4.2
Swift 3 et 4
Swift plus âgé
la source
deinit
comme ça: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:
la source
Swift 4:
Ensuite, ajout d'une méthode pour arrêter d'écouter les notifications lorsque la vie de l'objet se termine: -
la source
+=
semble rendre les inserts de plus en plus grands.UIResponder.keyboardWillShowNotification
etUIResponder.keyboardWillHideNotification
, et la touche d'information du clavier estUIResponder.keyboardFrameBeginUserInfoKey
.Rapide - 4
la source
Consultez la section Gestion du clavier du «Guide de programmation de texte, Web et édition» pour obtenir des informations sur le suivi du clavier affiché ou masqué et comment l'afficher / le supprimer manuellement.
la source
Vous voudrez vous inscrire pour les 2 notifications clavier:
Excellent article sur la façon d'ajuster votre TextField au clavier - http://iosdevelopertips.com/user-interface/adjust-textfield-hidden-by-keyboard.html
la source
Dans Swift 4.2, les noms de notification ont été déplacés vers un espace de noms différent. Alors maintenant c'est
la source
Swift 5
Les réponses ci-dessus sont correctes. Bien que je préfère créer une aide pour conclure le fichier
notification's observers
.Le bénéfice:
Exemple de code:
Comment utiliser:
}
la source
Swift 4 -
dd 20 october 2017
la source
Si vous en avez plusieurs
UITextField
et que vous devez faire quelque chose lorsque (ou avant) le clavier apparaît ou disparaît, vous pouvez implémenter cette approche.Ajoutez
UITextFieldDelegate
à votre classe. Attribuez un compteur entier, disons:Mettez ce compteur à zéro quelque part dans
viewDidLoad
. Ensuite, implémenteztextFieldShouldBeginEditing
ettextFieldShouldEndEditing
déléguez des méthodes.Dans le premier, ajoutez 1 à editCounter. Si la valeur de editCounter devient 1 - cela signifie que le clavier apparaîtra (au cas où vous retournez YES). Si editCounter> 1 - cela signifie que le clavier est déjà visible et qu'un autre UITextField détient le focus.
En
textFieldShouldEndEditing
soustrayez 1 à editCounter. Si vous obtenez zéro, le clavier sera ignoré, sinon il restera à l'écran.la source
Vous pouvez utiliser la bibliothèque KBKeyboardObserver . Il contient quelques exemples et fournit une interface simple.
la source
Il existe un CocoaPods pour faciliter l'observation sur
NSNotificationCentr
la visibilité du clavier ici: https://github.com/levantAJ/Keyhipod 'Keyhi'
la source
Alors ah, c'est la vraie réponse maintenant.
la source