Je suis confronté au problème du déplacement de la vue lorsque le clavier couvre un élément qui vient de gagner le premier répondeur. J'ai commencé en regardant this question et cela m'a donné une bonne longueur d'avance. Après avoir ajouté les observateurs à UIKeyboardWillShow
et UIKeyboardWillHide
j'ai fini avec le code suivant:Gestion de UIView lorsque le clavier apparaît
func keyboardWillShow(notification: Notification) {
guard let userInfo = notification.userInfo,
let kbRect = userInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue,
let duration = userInfo[UIKeyboardAnimationDurationUserInfoKey] as? Double else {
return
}
let kbSize = kbRect.cgRectValue.size
UIView.animate(withDuration: duration) {
self.view.transform = CGAffineTransform(translationX: 0, y: -kbSize.height)
}
}
func keyboardWillHide(notification: Notification) {
UIView.animate(withDuration: 0.3) {
self.view.transform = CGAffineTransform(translationX: 0, y: 0)
}
}
Il fonctionne très bien dans le sens où la vue se déplace vers le haut et vers le bas quand un gain de champ de texte le premier répondeur. Cependant, lorsque vous appuyez sur une touche, la vue se déplace à nouveau et ne permet pas de la déplacer en premier lieu. J'ai fait un petit GIF pour mieux décrire ce comportement indésirable, la première fois que le clavier apparaît et disparaît montre le bon comportement, la deuxième fois, quand une touche est pressée, montre le non désiré.
Ainsi, la question est, est-il un moyen que je pouvais empêcher le mouvement de vue quand une touche est enfoncée? Je voudrais que la vue reste "up" lorsque l'utilisateur utilise le clavier pour insérer du texte.
Comment avez-vous configuré cette image? Quelles sont les contraintes? –
@Lu_ il m'arrive à chaque vue, cette image que j'ai juste un test UIView que j'ai fait pour illustrer le problème que j'ai. Les contraintes sur l'image sont juste en haut, en tête et en fin de superview, une en textfield en bas, toutes avec 8 comme valeur –