简而言之……我可以滚动内容,但是在更改 ViewController 视图框架后,我无法滚动到顶部以查看“所有”滚动视图内容(框架 Origin Y 值减小,因此 VC 视图向上移动以适应键盘)。
在情节提要 ViewController 上,我添加了一个 UIScrollview 和它下面的一个按钮。滚动视图受限于其父(VC)视图。我在滚动视图中添加一个 contentView 并将其约束到滚动视图,并在内容视图和滚动视图父视图之间添加相等的宽度和高度约束。然后我将文本字段添加到 contentView 并将它们约束到 contentView。我计算并设置了 scrollView 内容大小,因此我只能滚动内容而不是整个 contentView。到现在为止还挺好。
我注册了键盘通知,并且在键盘中将显示处理程序我减少了视图控制器的视图原点 Y 值(通过 setFrame),这将视图向上移动,因此视图的底部最终位于键盘上方。同样在keyboardWillShow 处理程序中,我将scrollview contentsize 增加了键盘的垂直高度,因为scrollView 区域减少了键盘的垂直高度。
我能够滚动内容,但是 contentoffset (0,0) 位于内容的中间,并且额外的 contentsize 出现在文本字段内容的下方。我不再能够向上滚动到内容的顶部。
我知道scrollView通过改变它的边界来滚动它的内容所以我试图改变scrollview框架(减少它的原始Y值)并且也尝试了同样的contentview但是当contentView中的一个文本字段变成FirstResponder或者我只是尝试用鼠标滚动,内容向下滚动,内容的上半部分不可见,不能滚动到(如前所述 contentoffset 是 (0,0) 内容的一半,是“内容的顶部”。
有没有人看到我的方法有任何明显的问题,即在显示键盘的情况下继续滚动所有内容并且 ViewController 原点 Y 值减小?