1
この質問はthisと似ていますが、私はその質問の回答に従っていましたが、私は働かなかったので、最初の実行(キーボードが表示されているとき)でアニメーションが滑らかでない
キーボードの高さを取得するための通知オブザーバーキーボードの状態のため
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(LaunchScreenViewController.keyboardWillShow(_:)), name: UIKeyboardWillShowNotification, object: nil)
機能:ビューと私はキーボードが、これは私のコードで表示されたときにそれを移動したいです
func keyboardWillShow(notification:NSNotification) { let userInfo:NSDictionary = notification.userInfo! duration = (notification.userInfo![UIKeyboardAnimationDurationUserInfoKey] as! Double) let keyboardFrame:NSValue = userInfo.valueForKey(UIKeyboardFrameEndUserInfoKey) as! NSValue let keyboardRectangle = keyboardFrame.CGRectValue() keyboardHeight = keyboardRectangle.height }
私のアニメーション
func textFieldDidBeginEditing(textField: UITextField) {
self.nextButtonConstraint.constant = keyboardHeight
UIView.animateWithDuration(duration) {
self.nextButton.layoutIfNeeded()
self.emailTextField.layoutIfNeeded()
}
}
あなたはそれを入れて同様のquestion'の回答によれば、(最初の実行であり、問題を解決するが、それでもますので、私のアニメーションがtextFieldDidBeginEditing
上にあることを見ることができるようにキーボードが最初に表示されます)私のアニメーションが滑らかではありません
このコードは 'UIViewController'サブクラス内にありますか? 'nextButton'と' emailTextField'でそれを呼び出すのではなく、 'self.view.layoutIfNeeded'を呼び出してみてください。 – Connor
@ ConnorNeville、応答する人のためにありがとう、彼らは 'UIViewController'クラスの中にあり、私はあなたの提案をまだ変更していませんでした –
うーん。 'keyboardDidShow'のための別の' NSNotificationCenter'オブザーバを追加し、あなたのアニメーションをそこに入れてみてください。 – Connor