ios - UIScrollView:ViewController View 框架更改后滚动内容

标签 ios uiviewcontroller uiscrollview autolayout contentoffset

简而言之...我可以滚动内容,但是在更改 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/

相关文章:

objective-c - 如何在 UIImageView 上方显示一个不可见的交互按钮

ios - 使用 'hidden = YES' 谓词崩溃获取 PHAsset

ios - 在 UIAlertView 中设置 UITextField 的最大长度

iOS 7 自定义过渡故障

ios - 从 subview 更新主视图上的 IBOutlet

ios - uiview Controller 内的自定义 uiview 不显示 ios

ios - UIScrollView 在缩放或滚动时阻止所有触摸

ios - UITableViewCell drawRect 影响其他单元格

ios - 无法将 UIButton 添加到 UIScrollView

iphone - UIScrollView 触摸与 subview 触摸