0

我正在制作一个需要创建注册表以获取用户输入的应用程序。对于输入,我有 4 个字段。我调整了 4 个字段,UIStackView并使权益视图垂直居中,因为它是应用程序的设计。一切进展顺利。但在小型设备中,键盘在某些领域过度重叠。

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

我做了什么: 所以为了解决我的问题,我UIScrollView在我的堆栈视图周围创建了一个包含我的字段但它从来没有帮助过我。因为它也在创造设计问题。Stackview 永远不会出现在 ScrollView 的垂直居中。无论是否出现键盘,滚动视图也一直处于启用状态。看看下面的图片,它描绘了我的 UI

在此处输入图像描述

我想要的是: 我想要的是,除非出现键盘,否则滚动视图不应该是可滚动的。一旦出现键盘,则滚动视图必须是可滚动的。另外我想检查是否需要使滚动视图可滚动。因为在像 iPhone 8plus 这样的大型设备中,我认为没有必要显示滚动视图,因为键盘总是低于最后一个UITextfield。它只是在 iPhone 5 等较小的手机中重叠。

请帮我。我的想法是应用程序正在使用滚动视图。当键盘打开时,他们可能正在使用其他类似于滚动视图的东西,并且在没有键盘打开时不显示任何滚动视图。

4

2 回答 2

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
}
于 2018-11-28T05:32:34.400 回答
0

使用keyboardWillShowNotificationkeyboardWillHideNotification通知更改scrollView高度。在keyboardWillShowNotificationscrollView通过键盘的高度减少高度。你keyboardWillHideNotification只需像以前一样重置高度。有任何疑问请评论。

于 2018-11-28T05:23:01.610 回答