UIScrollView 在 iOS 5 中自动滚动随机量

Posted

技术标签:

【中文标题】UIScrollView 在 iOS 5 中自动滚动随机量【英文标题】:UIScrollView is automatically scrolling a random amount in iOS 5 【发布时间】:2013-02-15 22:38:05 【问题描述】:

我有一个以纵向模式启动的 iPhone 应用程序。当应用旋转为横向时,会使用以下方式推送新视图:

    [self presentModalViewController:viewController animated:YES];

这个横向视图包含一个在横向位置垂直滚动的 UIScrollView。滚动视图框架高度等于横向高度(320 点),滚动视图的内容大小高度是横向高度的 3 倍(即 960 点)。我启用了垂直分页,所以有 3 页。

当视图出现时,滚动视图会像我预期的那样滚动到顶部。但在 ios 5 中,滚动视图会随机跳转到向上滚动的某个位置。我已经注释掉了我的 viewDidAppear 方法,它仍然这样做。在 iOS 6 中它可以正常工作,但不会发生这种情况。

有人知道这里发生了什么吗?

【问题讨论】:

嗨。没有整个代码很难说。我没有看到任何特殊原因,以前从未遇到过这个问题。如果要确保滚动视图位于顶部,请在“viewWillAppear”中添加类似 setContentOffset:CGPointZero 的内容。但你不应该这样做。 问题是偏移量一直显示到视图已经出现之后。我可以在 viewDidAppear 中放置一个断点,当代码中断时,没有偏移并且视图完全呈现。但是当我继续执行时,会出现偏移量。我的视图控制器中没有在 viewDidAppear 之后执行的代码,所以我真的不知道发生了什么。 可能是因为视图是纵向创建的,而偏移是在“方向”过程中完成的,但我不确定。尝试在“旋转方法”中添加一些日志。但同样,如果没有整个代码,很难帮助您调试:/ 实际上我在 viewDidLoad 中尝试了您的建议,它解决了问题! UIScrollView 类的幕后一定发生了一些事情。您能否将您的建议添加为答案,以便我将其标记为正确? 完成 ;-) 谢谢。不是解决问题的最佳方法,但应该解决问题;) 【参考方案1】:

所以在 viewWillAppear(或其他地方)中添加一个 [scrollView setContentOffset:CGPointZero]。

可以提供帮助,但不是处理它的最佳方法;-)

【讨论】:

以上是关于UIScrollView 在 iOS 5 中自动滚动随机量的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView 内的 UIView 未在 3,5 英寸屏幕 iOS 上调整大小

iOS UIScrollView 的基本用法

iOS 7 自动布局 - UIScrollView 内的 UIImageView

在 iOS 中使用自动布局填充 UIScrollView 的内容

iOS中 : UIScrollView在导航控制器中的自动偏移的问题解决

具有动态视图数量和自动布局 iOS6 的 UIScrollView