要避免软键盘推动视图上移,可以使用以下解决方法:
// 在视图控制器的viewDidLoad方法中添加键盘监听
override func viewDidLoad() {
super.viewDidLoad()
// 添加键盘弹出和隐藏的观察者
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: UIResponder.keyboardWillShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil)
}
// 键盘弹出时更新视图布局
@objc func keyboardWillShow(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {
// 更新底部约束(或者是MDCBottomSheetController的高度约束)
// 将底部约束值设置为键盘高度,以保持视图不会被键盘推动
}
}
// 键盘隐藏时恢复视图布局
@objc func keyboardWillHide(notification: NSNotification) {
// 恢复底部约束(或者是MDCBottomSheetController的高度约束)
// 将底部约束值恢复为原始值
}
// 在视图控制器的deinit方法中移除键盘监听
deinit {
NotificationCenter.default.removeObserver(self)
}
这样,在弹出MDCBottomSheetController时,键盘就不会推动视图上移了。