【发布时间】:2020-01-16 20:17:53
【问题描述】:
我有一个滚动视图,里面有很多文本字段。当我向上推滚动视图以使键盘不隐藏某些子视图时,我无法一直滚动到滚动视图的顶部。这是我的代码。任何人都可以帮忙吗?
class IncomingPackageViewController: UIViewController{
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self,selector:#selector(self.keyboardWillShow),name:UIResponder.keyboardDidShowNotification, object: nil)
NotificationCenter.default.addObserver(self,selector: #selector(self.keyboardWillHide),name:UIResponder.keyboardDidHideNotification, object: nil)
}
@objc func keyboardWillShow(notification: Notification) {
guard let userInfo = notification.userInfo,
let frame = (userInfo[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue else {return}
let contentInset = UIEdgeInsets(top: 0, left: 0, bottom: frame.height, right: 0)
if self.view.frame.origin.y == 0 {
self.view.frame.origin.y -= contentInset.bottom
}
}
@objc func keyboardWillHide(notification: Notification) {
if self.view.frame.origin.y != 0 {
self.view.frame.origin.y = 0
}
}
}
【问题讨论】:
-
你真的应该使用Auto Layout而不是静态帧
-
您也可以尝试使用
keyboardDidShow通知,因为此通知是在键盘出现后发出的。
标签: ios swift uiscrollview keyboard