我试图移动最初位于视图底部的按钮,但是当选择了文本字段并渲染了键盘时,将按钮与之一起向上移动。
如果您使用过应用程序Robinhood,则在登录或注册时其功能相同。
其他几篇文章都无法为我解决此问题。
Move view with keyboard using Swift
是否有已经解决了此功能的外部存储库或解决方案?
答案 0 :(得分:2)
扩展UIView {
func bindToKeyboard() {
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillChange(_:)), name: UIResponder.keyboardWillChangeFrameNotification, object: nil)
}
@objc func keyboardWillChange(_ notification: NSNotification) {
let duration = notification.userInfo![UIResponder.keyboardAnimationDurationUserInfoKey] as! Double
let curve = notification.userInfo![UIResponder.keyboardAnimationCurveUserInfoKey] as! UInt
let begginingFrame = (notification.userInfo![UIResponder.keyboardFrameBeginUserInfoKey] as! NSValue).cgRectValue
let endFrame = (notification.userInfo![UIResponder.keyboardFrameEndUserInfoKey] as! NSValue).cgRectValue
let deltaY = endFrame.origin.y - begginingFrame.origin.y
UIView.animateKeyframes(withDuration: duration, delay: 0.0, options: UIView.KeyframeAnimationOptions(rawValue: curve), animations: {
self.frame.origin.y += deltaY
}, completion: nil)
}
}
然后使用我下面使用的功能。
覆盖func viewDidLoad(){
super.viewDidLoad()
yourButtonName.bindToKeyboard()
}
希望这将是适合您的解决方案。