スウィフトを使用して、キーボードの高さの変更、またはiOSのキーボードの変更を検出する方法。それによるとキーボード高さ変更オブザーバ
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(CommentView.keyboardWillShow(_:)), name: UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(CommentView.keyboardWillHide(_:)), name: UIKeyboardWillHideNotification, object: nil)
と私は私のボタンの位置を変更しています:私はキーボードの天気を検出するために、私のアプリのためにオブザーバーを追加することができるよ
はショーや使用しない
func keyboardWillShow(notification: NSNotification) {
animateTextFieldWithKeyboard(notification)
}
func keyboardWillHide(notification: NSNotification) {
animateTextFieldWithKeyboard(notification)
}
func animateTextFieldWithKeyboard(notification: NSNotification) {
let userInfo = notification.userInfo!
let keyboardSize = (userInfo[UIKeyboardFrameEndUserInfoKey] as! NSValue).CGRectValue()
let duration = userInfo[UIKeyboardAnimationDurationUserInfoKey] as! Double
let curve = userInfo[UIKeyboardAnimationCurveUserInfoKey] as! UInt
// baseContraint is your Auto Layout constraint that pins the
// text view to the bottom of the superview.
if notification.name == UIKeyboardWillShowNotification {
if (BottomConstraint.constant == 0) {
BottomConstraint.constant += keyboardSize.height
}
// move up
}
else {
BottomConstraint.constant = 0
// move down
}
view.setNeedsUpdateConstraints()
let options = UIViewAnimationOptions(rawValue: curve << 16)
UIView.animateWithDuration(duration, delay: 0, options: options,
animations: {
self.view.layoutIfNeeded()
},
completion: nil
)
}
あなたはスクリーンショットで見ることができるようにすべてが正常に動作している:
ただし、キーボードの種類を絵文字などに変更すると問題が発生します。それは私のテキストフィールドと私のボタンを隠しますので、私はあなたがに取得XcodeのドキュメントにUIKeyboardWillShowNotification
で検索する場合は、キーボード新しい高さ
こんにちは、この問題の解決策を見つけましたか、今この問題に直面しています。提案は歓迎です – karthik