keyboardWillShow 上的滚动视图内容插入问题

Posted

技术标签:

【中文标题】keyboardWillShow 上的滚动视图内容插入问题【英文标题】:Scroll view content inset issue on keyboardWillShow 【发布时间】:2020-06-10 18:58:03 【问题描述】:

我有以下代码来调整滚动视图插图。滚动视图中的内容低于屏幕录制中显示的键盘限制 - https://imgur.com/a/XWfiVYX

如何解决这个问题,让 bottomView 的底部粘在键盘顶部并且不会向上或向下滚动?

@objc func keyboardWillShow(notification:NSNotification) 
    let userInfo = notification.userInfo!
    let keyboardFrame:CGRect = (userInfo[UIResponder.keyboardFrameEndUserInfoKey] as! NSValue).cgRectValue
    let kbSize = keyboardFrame.size
    let contentInset:UIEdgeInsets = UIEdgeInsets(top: 0.0, left: 0.0, bottom: kbSize.height, right: 0.0)

     scrollView.contentInset = contentInset
     scrollView.scrollIndicatorInsets = contentInset

【问题讨论】:

【参考方案1】:

使用 scrollView.contentInset 不会修复您在 kb 以上的视图,它会在您看到的情况下上下滚动。该解决方案来自 Apple 的代码,它可以很好地将 textView 仅显示在 kb 之上,并且不会将文本视图的底部粘贴在 kb 之上。

您需要将整个 self.view 向上移动 kb 高度。

【讨论】:

Tx 获取提示。我设法通过向上移动整个视图来使其工作,但是它有一些副作用。它显示了键盘和视图之间的背景空间。

以上是关于keyboardWillShow 上的滚动视图内容插入问题的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 移动视图时界面元素重叠

使用滚动视图管理键盘

NSNotification keyBoardWillShow 和 keyboardWillHide 没有被调用

根据滚动视图上的内容增加表格视图高度

keyboardWillShow 调用了两次

其他应用程序的键盘调用keyboardWillShow