UIScrollView:UIEdgeInsets仅适用于" Top"和"左"

时间:2016-02-03 18:47:58

标签: ios swift uiscrollview

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

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

滚动视图未按预期从键盘高度从底部移动。变量' keyboardSize!.height'正在接收正确的高度值,如果我输入随机值到底部'参数我得到相同的结果。但是,如果我将值添加到' top'并且'离开'参数在调用keyboardWasShown函数时会移动scrollview。

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。任何帮助赞赏。

*编辑*

这个问题是国际文凭组织中存在模糊限制的结果。重置它们并使用建议的约束后,UIScrollView正常工作。最初的约束是根据UINavigationBar设置的,而不是视图的顶部。

1 个答案:

答案 0 :(得分:0)

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

  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];