UIScrollView:ViewController更改视图框后滚动内容

问题描述 投票:0回答:1

简而言之,我可以滚动内容,但是在更改ViewController视图框架后,无法滚动到顶部以查看全部的scrollView内容(框架Origin Y值减小,因此VC视图向上移动以适应键盘)。

在故事板上的ViewController上,我在下面添加了一个UIScrollview和一个按钮。滚动视图限于其父视图(VC)。我在滚动视图中添加一个contentView并将其约束到滚动视图,并在内容视图和scrollviews父视图之间添加相等的宽度和高度约束。然后,我将文本字段添加到contentView并将其约束到contentView。我计算并设置了scrollView内容的大小,这样我就只能滚动内容,而不是整个contentView。到目前为止一切顺利。

我注册了键盘通知,并在键盘上显示了处理程序,我减小了视图控制器的视图原点Y值(通过setFrame),该值将视图向上移动,因此视图底部最终位于键盘上方。同样,在keyboardWillShow处理程序中,由于scrollView区域已减小了键盘的垂直高度,所以我将scrollview的内容尺寸增加了键盘的垂直高度。

我无法滚动内容,但是contentoffset(0,0)位于内容的中间位置,并且额外的contentsize出现在文本字段的内容下方。我无法再向上滚动到内容的顶部。

我知道scrollView通过更改其边界滚动其内容,所以我尝试更改scrollview框架(减小其原点Y值),并且对contentview也尝试了相同的操作,但是当contentView中的文本字段之一变为FirstResponder时,或者我只是尝试使用鼠标滚动,内容向下滚动,并且内容的上半部分不可见,无法滚动到(如前所述,contentoffset在内容的下半部分为(0,0),并且是“内容的上半部分” 。

有人在显示键盘的情况下继续滚动所有内容,而ViewController原点Y值减小了,有人看到我的方法有任何明显的问题吗?

ios uiviewcontroller uiscrollview autolayout contentoffset
1个回答
0
投票

我需要添加contentInsets和scrollIndicatorInsets。很棒的文章在这里... https://spin.atomicobject.com/2014/03/05/uiscrollview-autolayout-ios/

© www.soinside.com 2019 - 2024. All rights reserved.