【问题标题】:iOS How to move scrollbar when Keybord is visibleiOS如何在键盘可见时移动滚动条
【发布时间】:2019-04-29 22:49:38
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: ios swift uiscrollview iqkeyboardmanager


    【解决方案1】:

    使用keyboardWillShowNotificationkeyboardWillHideNotification 通知更改scrollView 高度。在keyboardWillShowNotification 上,您将scrollView 的高度减少了键盘的高度。在keyboardWillHideNotification 中,您只需像以前一样重置高度。有任何疑问欢迎评论。

    【讨论】:

    • 请给我看代码。以及如何在 UiScrollview 中居中对齐视图。我有 UIStackView,它没有在 UiScrollview 内垂直对齐
    【解决方案2】:
    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
    }
    

    【讨论】:

    • 以及如何在滚动视图中垂直居中对齐我的字段
    • 将堆栈视图放在滚动视图的内容视图中,垂直居中于父级。这可以解决您的对齐问题。并将滚动视图约束(顶部、底部、前导和尾随)设置为 (0,0,0,0)。
    • 我也这样做了。但问题是我无法理解的。通过这样做,我可以看到垂直居中的字段。但是当我在真实设备上运行时,我的整个 Stackview 都会移到底部。看起来在真实设备上它无法在 UiScrollview 中找到垂直中心
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    • 2018-06-11
    • 1970-01-01
    • 2019-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多