【问题标题】:UIScrollView : UIEdgeInsets works only from "Top" and "Left"UIScrollView : UIEdgeInsets 仅适用于“顶部”和“左侧”
【发布时间】:2016-02-03 18:47:58
【问题描述】:

我正在实现此方法来重新定位 UIScrollView 以显示被键盘弹出窗口遮挡的 UITextField:

Move a view up only when the keyboard covers an input field

滚动视图没有按预期从底部移动键盘高度。变量 'keyboardSize!.height' 正在接收正确的高度值,如果我在 'bottom' 参数中输入随机值,我会得到相同的结果。但是,如果我向 'top' 和 'left' 参数添加值,它们会在调用 keyboardWasShown 函数时移动滚动视图。

let contentInsets : UIEdgeInsets = UIEdgeInsets(top : 0.0, left : 0.0, bottom : keyboardSize!.height, right : 0.0)
self.scrollView.contentInset = contentInsets
self.scrollView.scrollIndicatorInsets = contentInsets

我在 TableViewController 上可以正常工作,但在 UIScrollView 上却不行。在这种情况下, UIViewController 有一个 UIView 和一个 UIScrollView 在它上面分层。任何帮助表示赞赏。

* 编辑 *

这个问题是由 IB 中的含糊限制造成的。重置它们并使用建议的约束后, UIScrollView 工作正常。最初,顶部约束是相对于 UINavigationBar 而不是视图顶部设置的。

【问题讨论】:

    标签: ios swift uiscrollview


    【解决方案1】:

    您需要在滚动视图中将文本字段向上滚动到键盘上方

      CGRect visibleRect = CGRect(x: self.view.frame.origin.x, y: self.view.frame.origin.y, width: self.view.frame.size.width, height: self.view.frame.size.height - keyboardSize?.height ?? 0);
    
      [scrollView setContentOffset:visibleRect.center animated:YES];
    

    【讨论】:

    • 谢谢,但事实证明问题是约束,我不必更改代码
    猜你喜欢
    • 2021-06-14
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-24
    相关资源
    最近更新 更多