ボタンでUIView Extensionを使用してキーボードでスライドさせています。アニメーション後にボタンが消えます
extension UIView {
func bindToKeyboard() {
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillChange(_:)), name: NSNotification.Name.UIKeyboardWillChangeFrame, object: nil)
}
@objc func keyboardWillChange(_ notification: NSNotification) {
let duration = notification.userInfo![UIKeyboardAnimationDurationUserInfoKey] as! Double
let curve = notification.userInfo![UIKeyboardAnimationCurveUserInfoKey] as! UInt
let startingFrame = (notification.userInfo![UIKeyboardFrameBeginUserInfoKey] as! NSValue).cgRectValue
let endingFrame = (notification.userInfo![UIKeyboardFrameEndUserInfoKey] as! NSValue).cgRectValue
let deltaY = endingFrame.origin.y - startingFrame.origin.y
let options = UIViewAnimationOptions(rawValue: curve << 16)
UIView.animate(withDuration: duration, delay: 0, options: options, animations: {
self.frame.origin.y += deltaY
self.layoutIfNeeded()
}, completion: nil)
}
}
その後のViewControllerにだけ使用して:
func setUpView() {
okayButton.bindToKeyboard()
self.isHeroEnabled = true
}
をしかし、私は、画面上の他のボタンを押したときに問題がある:
保存ボタンは他のボタンをタップした後に消えます「上の位置」にあるときは下にあるときに表示されます。私は間違って何をしていますか?それを防ぐ/修正する方法は?
編集:これらのボタンの操作はありません。 (+、 - 、保存)
ありがとう!
キーボードの問題は隠されていません。 –
これらのボタンのいずれにもアクションはありません。 – Magnifique
フレームを調整するのではなく、ビューにトランスフォームを適用しようとしましたか?私はそれが調整されているフレームとレイアウトとが間違って再計算されていることと関係があると感じています。 – WsCandy