iOS如何显示Keybord时如何移动滚动条

时间:2018-11-28 05:07:30

标签: ios swift uiscrollview iqkeyboardmanager

我正在制作一个需要创建注册表单以接受用户输入的应用。对于输入,我有4个字段。我调整了UIStackView中的4个字段,并使之成为应用程序设计的垂直居中视图。一切都很好。但是在小型设备中,键盘覆盖了某些字段。

为解决我的问题,我进行了研发并使用了IQKeyboardManager。这对我帮助很大。但是我已经看到,在所有字段中,您都可以使用IQKeyboardManager提供的工具栏来访问其他字段。但是现在提前几天使用应用程序,您可以看到可以上下滚动视图。

我所做的事情: 因此,为了解决我的问题,我在堆栈视图周围创建了一个UIScrollView,其中包含我的字段,但是它从没有帮助我。因为它也在制造设计问题。 Stackview永远不会位于ScrollView的垂直居中位置。此外,无论是否出现键盘,始终都启用滚动视图。看看下面的图片,这些图片让我感到迷惑

enter image description here

我想要的东西: 我所要的就是直到滚动,除非出现键盘,否则scrollview不能滚动。出现键盘后,滚动视图必须是可滚动的。我也想检查是否需要使scrollview可滚动。因为在较大的设备(如iPhone 8plus)中,我认为无需显示滚动视图,因为键盘始终位于最后一个UITextfield以下。它只是与iPhone 5等较小的手机重叠。

请帮助我。我的想法是应用程序正在使用scrollview。他们可能正在使用其他功能,这些功能可在打开键盘时在视图中起作用,而在未打开键盘时不显示任何滚动视图。

2 个答案:

答案 0 :(得分:0)

使用keyboardWillShowNotificationkeyboardWillHideNotification通知来更改scrollView的高度。在keyboardWillShowNotification上,您将scrollView的高度减小键盘的高度。在keyboardWillHideNotification中,您只需重置高度即可。如有疑问,请发表评论。

答案 1 :(得分:0)

  1. 在滚动视图内创建内容视图。
  2. 将内容视图约束(顶部,底部,前导和结尾)设置为(0,0,0,0),并在滚动视图中设置等宽和等高。

要在滚动视图上设置约束,可以参考

https://medium.com/@pradeep_chauhan/how-to-configure-a-uiscrollview-with-auto-layout-in-interface-builder-218dcb4022d7

然后,在视图控制器中实现键盘观察器。

override func viewDidLoad()
    {
    super.viewDidLoad()
    NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillShow(notification:)), name: NSNotification.Name.UIKeyboardDidShow, object: nil)
    NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillHide(notification:)), name: NSNotification.Name.UIKeyboardDidHide, object: nil)
}

 func keyboardWillShow(notification: NSNotification) {
      // set scroll view content size height as per your need (subtract keyboard height from original)
}

func keyboardWillHide(notification: NSNotification) {
    // reset scroll view content size height to original
}