ios - UIScrollView: View 不会自动滚动

标签 ios swift uiscrollview

我是 Swift/iOS 的新手,我正在制作一个简单的应用程序来跟踪我家里的药柜。我在管理用于文本输入的屏幕键盘时遇到问题。

该应用程序基本上是一个包含数据条目的表格 View ,当按下其中一个时,您将进入包含一些详细信息的详细 View 。

在此详细 View 中,我有一个 UIScrollView,它被限制为等于安全区域,其中有一个名为“Container View”的 UIView,其大小与 Scrollview 相同,并且在该 View 内还有一个 View 来组成使用自动布局的屏幕(没有警告)。

在这些 subview 之一中有一个 UITextField,我用它来收集用户通过屏幕键盘输入的注释。

我添加了一些代码来管理屏幕键盘,在 View 底部插图显示时调整它以防止键盘隐藏文本字段,并在键盘消失时删除该插图。

我最终得到了以下代码,这是我从 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

}

但是,即使当键盘出现在屏幕上时正确调用该函数, View 也不会滚动。我不确定问题是出在这里还是 IB 的某个地方......

令我印象深刻的是,我可以在键盘出现在屏幕上后手动向下滚动到正确的数量,但它只是不会像我希望的那样自动滚动。正如预期的那样,当屏幕键盘未显示时, View 不会滚动,因此显然调整功能工作正常,只是不会自行滚动。

当键盘消失时, View 再次重新调整为正常,因此该部分工作正常。

有什么想法吗?

非常感谢!

最佳答案

在scrollView中你必须设置内容偏移量。因此,在您的情况下,您必须这样做:

if notification.name == UIResponder.keyboardWillHideNotification {
        scrollView.setContentOffset(CGPoint(x: 0, y: 0), animated: true)
    } else {
        scrollView.setContentOffset(CGPoint(x: 0, y: keyboardViewEndFrame.size.height), animated: true)
    }

关于ios - UIScrollView: View 不会自动滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54331667/

相关文章:

ios - 将 UITextfield "clear"默认按钮连接到 UILabel

ios - Today Widget 无法加载特定代码行

ios - 安装 RealmSwift pod 也会安装 Realm (ObjC)?

ios - 向 ScrollView 添加标签的最简单方法

objective-c - 复制 iOS 5 股票小部件

ios - UIImageview 添加到另一个 subview (即 UIScrollview)后不显示

iOS/objective-C : Store Decimal as NSNumber in CoreData

ios - 当某些键动态更改时如何从字典中获取值

iphone - 使用 nspredicate 进行快速研究

ios - 方法需要启用固定