Quelle est la vitesse d'animation du clavier apparaissant dans iOS8?
Voici une animation pour un champ de texte et la barre d'outils qui se déplacent vers le haut lorsque le clavier apparaît.
baseConstraint.constant = 211
self.view.setNeedsUpdateConstraints()
UIView.animateWithDuration(0.30, animations: {
self.view.layoutIfNeeded()
})
Il est proche, mais pas tout à fait identiques. Comment voulez-vous modifier le au-dessus de l'animation?
Edit:
Voici le code final à l'aide de la réponse ci-dessous!
func keyboardWillShow(aNotification: NSNotification) {
let duration = aNotification.userInfo.objectForKey(UIKeyboardAnimationDurationUserInfoKey) as Double
let curve = aNotification.userInfo.objectForKey(UIKeyboardAnimationCurveUserInfoKey) as UInt
self.view.setNeedsLayout()
baseConstraint.constant = 211
self.view.setNeedsUpdateConstraints()
UIView.animateWithDuration(duration, delay: 0, options: UIViewAnimationOptions.fromMask(curve), animations: {
self.view.layoutIfNeeded()
}, completion: {
(value: Bool) in println()
})
}
source d'informationauteur user3784622
Vous devez vous connecter pour publier un commentaire.
Vous pouvez obtenir de l'animation de la durée et de la courbe d'animation de la userInfo dictionnaire sur le keyboardWillShow: notifications.
D'abord vous inscrire à la notification
Puis obtenir les valeurs de notifications userInfo clés.
Il y a beaucoup plus de ces clés, et vous pouvez également les obtenir à partir de la UIKeyboardWillDismiss notification.
Cette fonctionnalité est disponible tous le chemin du retour à iOS 3.0 😀
Heres les docs:
https://developer.apple.com/library/ios/documentation/uikit/reference/UIWindow_Class/UIWindowClassReference/UIWindowClassReference.html#//apple_ref/doc/constant_group/Keyboard_Notification_User_Info_Keys
Laissez-moi savoir si vous avez besoin d'aide pour le faire fonctionner.
Swift Version:
La réponse avec la variable de durée de droite et de travailler iOS 3 à 8, mais avec la nouvelle version de Swift, la réponse du code ne fonctionne plus.
Peut-être que c'est une erreur de mon côté, mais je dois écrire:
Ressemble objectForKey ne fonctionne plus et la conversion est plus stricte.
swift3
Swift 4 mise à jour, iOS 11+
Inscrire pour la notification d'abord en vue du cycle de vie de la méthode :
Puis dans
keyBoardWillShow
méthode :Enfin, n'oubliez pas de retirer le statut d'observateur dans
deinit
méthode ://tout d'abord déclarer délégué dans votre classe UITextFieldDelegate
//Placer en haut de la vue-contrôleur
//Copie des ravageurs et des textfields méthode du délégué à vous classe
Tout d'abord, la réponse sélectionnée est la bonne façon de faire.
Plus peuvent être fournis ici est ce que l'animation est vraiment. Si vous imprimez tous CAAnimations dans le UIViewAnimation bloc, vous trouverez que c'est un CASpringAnimation lors de la configuration de la courbe d'animation à celui qui est prévu dans le clavier de notification. La durée est de 0,5, et les autres paramètres sont:
Le code ci-dessus peut reproduire l'animation précisément.
Une fois l'animation de la courbe est définie sur le clavier, UIView animation ignore la durée dans le paramètre. (Si vous voulez vraiment changer la durée, ajuster la
mass
valeur.)Je tiens à souligner quelque chose qui a déclenché m'lors de la résolution de ce problème. J'avais besoin de la taille du clavier grâce à la nouvelle "quickype" de la vue et de sa capacité à afficher/masquer (iOS8). C'est de cette façon j'ai fini par le résoudre:
}
Swift 4