向上推键盘 Swift iOS 后,我的 Scrollview 不会一直向上滚动
Posted
技术标签:
【中文标题】向上推键盘 Swift iOS 后,我的 Scrollview 不会一直向上滚动【英文标题】:My Scrollview doesn't scroll all the way up after pushing up the keyboard Swift iOS 【发布时间】: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
通知,因为此通知是在键盘出现后发出的。
【参考方案1】:
你应该使用scrollView.contentInset
,你不应该弄乱 ViewControllers 视图框架。
我还建议您使用tableView
,因为它可以免费为您提供这种行为。
【讨论】:
以上是关于向上推键盘 Swift iOS 后,我的 Scrollview 不会一直向上滚动的主要内容,如果未能解决你的问题,请参考以下文章
使用 phonegap 防止键盘在 iOS 应用程序中向上推 webview
Swift 防止 TabBar 在键盘处于活动状态时向上移动
SWIFT:用键盘向上移动的UIView,在初始移动后移动非常奇怪,不会回落
Android:如何防止键盘在我的布局中向上推某个视图? [复制]