【发布时间】:2019-06-17 07:18:30
【问题描述】:
我是 Swift/iOS 的新手,我正在制作一个简单的应用程序来跟踪我家中的药柜。我在管理用于文本输入的屏幕键盘时遇到问题。
该应用程序基本上是一个带有数据条目的表格视图,当按下其中一个时,您会进入包含一些详细信息的详细视图。
在这个详细视图中,我有一个 UIScrollView,它被限制为等于安全区域,在它内部有一个名为“Container View”的 UIView,它与 Scrollview 的大小相同,在该视图内部还有一个视图来组成使用 AutoLayout 的屏幕(没有警告)。
在其中一个子视图中有一个 UITextField,我用它来收集用户通过屏幕键盘输入的注释。
我添加了一些代码来管理屏幕键盘,调整视图底部的插图,以防止键盘隐藏文本字段,并在键盘消失时删除该插图。
我最终得到了以下代码,这是我从 hackingwithswift.com 获得的(以及设置为正确调用此函数的属性观察器,我已确认它正在工作):
func adjustInsetForKeyboardShowHide(notification: Notification) {
let userInfo = notification.userInfo!
let keyboardScreenEndFrame = (userInfo[UIResponder.keyboardFrameEndUserInfoKey] as! NSValue).cgRectValue
let keyboardViewEndFrame = view.convert(keyboardScreenEndFrame, from: view.window)
if notification.name == UIResponder.keyboardWillHideNotification {
scrollView.contentInset = UIEdgeInsets.zero
} else {
scrollView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: keyboardViewEndFrame.height, right: 0)
}
scrollView.scrollIndicatorInsets = scrollView.contentInset
}
然而,即使当键盘出现在屏幕上时该函数被正确调用,视图也不会滚动。我不确定问题出在此处还是在 IB 的某个地方...
让我印象深刻的是,我可以在键盘出现在屏幕上后手动向下滚动到正确的数量,但它并没有像我希望的那样自动滚动。正如预期的那样,当屏幕键盘不显示时视图不会滚动,因此显然调整功能工作正常,它只是不会自行滚动。
当键盘消失时,视图会重新调整为正常状态,因此该部分工作正常。
有什么想法吗?
非常感谢!
【问题讨论】:
标签: ios swift uiscrollview