UIScrollView 并不总是滚动让我发疯

Posted

技术标签:

【中文标题】UIScrollView 并不总是滚动让我发疯【英文标题】:UIScrollView doesn't always scroll driving me crazy 【发布时间】:2013-11-02 21:10:51 【问题描述】:

我有一个 UIScrollView,里面有 2 个 UIImageView。如果将它们相加,图像的高度约为 2330 像素。

在 Storyboard (iPad) 中,我将 UIScrollView 的大小设置为宽度 768,高度设置为 1024。

在 ViewController 的 viewDidLoad 中,我以编程方式设置 UIScrollView 的 contentsize,如下所示:

- (void)viewDidLoad


[super viewDidLoad];

    [self.introScrollView setScrollEnabled:YES];
    self.introScrollView.contentSize=CGSizeMake(768,4500);


高度为 4500 像素,足以容纳两个图像。 有趣的是,它工作了一次,然后又停止工作了!!!它怎么可能起作用然后又停止了。这不合逻辑。一定是bug什么的。

【问题讨论】:

【参考方案1】:

第一个最常见的原因是您已经处理过的 contentSize。

第二个最常见的原因是未设置出口 NSLog(@"%@",self.introScrollView); 不应为 nil。如果是,那么您将永远没有机会设置 contentSize。

第三个是滚动视图上的 userInteractionEnabled 已在 IB 或其他地方设置为 NO。

遥远的第四个是父级上的手势识别器或重叠的兄弟级正在窃取手势。

在这种情况下,我会押注 #2。

【讨论】:

我已经检查了 #2 并在控制台中输出: ;层 = ;内容偏移:0, 0> 还选中了#3,并且在 IB 中勾选了启用的用户交互。我不使用任何会忽略 #4 的手势识别器。 我已尝试从我正在测试的 iPad 上删除该应用程序并再次添加它。也没有帮助。谢谢你的时间! 好的,现在它给了我 ;层 = ;内容偏移:0, 0>【参考方案2】:

我在 IB 中为 UIScrollView 关闭了 AutoLayout,它自动删除了 UIImageViews 的约束,现在它就像一个魅力!

【讨论】:

抱歉,我离开了一整天,无法帮助您。很高兴您开始工作(尽管我不确定可以对子视图做些什么来产生影响)。您可以将自己的答案标记为正确,因为它有效。

以上是关于UIScrollView 并不总是滚动让我发疯的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView 子视图并不总是可点击的

分页uiscrollview自动滚动到第一页

UIScrollView 上的 UIView 菜单

UIScrollView 不旋转到横向

uiscrollview——我理解正确吗?

iOS开发UI篇—UIScrollView控件介绍