UIScrollView : UIEdgeInsets 仅适用于“顶部”和“左侧”
Posted
技术标签:
【中文标题】UIScrollView : UIEdgeInsets 仅适用于“顶部”和“左侧”【英文标题】:UIScrollView : UIEdgeInsets works only from "Top" and "Left" 【发布时间】: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 而不是视图顶部设置的。
【问题讨论】:
【参考方案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];
【讨论】:
谢谢,但事实证明问题是约束,我不必更改代码以上是关于UIScrollView : UIEdgeInsets 仅适用于“顶部”和“左侧”的主要内容,如果未能解决你的问题,请参考以下文章
UIScrollView 内的 UIScrollView 时滚动
UIScrollView里面的UIScrollView:滚动
问题:UIScrollview 弹跳使父 UIScrollview 弹跳
UIScrollView 嵌入其他 UIScrollView