简而言之...我可以滚动内容,但是在更改 ViewController View 框架后我无法滚动到顶部查看“所有”scrollView 内容(框架 Origin Y 值减小,因此 VC View 向上移动到容纳键盘)。
在 Storyboard ViewController 上,我添加了一个 UIScrollview 及其下方的一个按钮。 ScrollView 受限于其父 View (VC)。我在 ScrollView 中添加一个 contentView 并将其约束到 ScrollView ,并在内容 View 和 ScrollView 父 View 之间添加相等的宽度和高度约束。然后,我将文本字段添加到 contentView 并将它们限制到 contentView。我计算并设置 ScrollView 内容大小,以便我只能滚动内容而不是整个内容 View 。到目前为止一切顺利。
我注册键盘通知,并在键盘中显示处理程序,我减少 View Controller 的 View 原点 Y 值(通过 setFrame),这会将 View 向上移动,以便 View 的底部最终位于键盘上方。另外,在 KeyboardWillShow 处理程序中,我将 ScrollView 内容大小增加了键盘的垂直高度,因为 ScrollView 区域已减少了键盘的垂直高度。
我能够滚动内容,但是 contentoffset (0,0) 位于内容中间,并且附加内容大小出现在文本字段内容下方。我无法再向上滚动到内容顶部。
我知道scrollView通过更改其边界来滚动其内容,因此我尝试更改scrollview框架(减少其原点Y值),并且也尝试对contentview进行相同的操作,但是当contentView中的一个文本字段变成FirstResponder时或者我只是尝试用鼠标滚动,内容向下滚动,内容的上半部分不可见并且无法滚动到(如前所述,contentoffset 是内容的一半,并且是“内容的顶部” ”。
有人发现我的方法有任何明显的问题吗?在显示键盘且 ViewController 原点 Y 值减小的情况下继续滚动所有内容?
最佳答案
我需要添加 contentInsets 和scrollIndicatorInsets。很棒的文章... https://spin.atomicobject.com/2014/03/05/uiscrollview-autolayout-ios/
关于ios - UIScrollView:ViewController View 框架更改后滚动内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59274372/