UIScrollView 不反弹

Posted

技术标签:

【中文标题】UIScrollView 不反弹【英文标题】:UIScrollView doesn't bounce 【发布时间】:2010-04-16 14:42:51 【问题描述】:

我有一个 UIScrollView 包含在自定义 UIView 中,其内容大小大于 ScrollView 的框架。

我可以像我期望的那样拖动滚动条,但是这并没有给我使用 UITableView 或 UIWebView 获得的橡皮筋效果。当你到达一个极端时,它就会停止。

我已经设置了bounce = YES,我还有什么要做的吗?

我阅读了文档,他们说我必须实现委托。我做到了。

他们还说我应该更改缩放级别,但我不希望用户实际能够缩放,所以我没有设置这些。

【问题讨论】:

【参考方案1】:

对于以后发现此线程的任何人,如果您将UIView 子类化并在每个layoutSubviews 上重新设置UIScrollView 的框架,那就是问题 - 它会取消反弹:

http://openradar.appspot.com/8045239

你应该做类似的事情:

- (void)layoutSubviews;

    [super layoutSubviews];

    CGRect frame = [self calculateScrollViewFrame];
    if (!CGRectEqualToRect(frame, self.scrollView.frame)) 
        self.scrollView.frame = frame;

【讨论】:

在怀疑这一点之前浪费了数小时的错误努力。谢谢!【参考方案2】:

我遇到了同样的问题,在 UIScrollView 上并没有全部填满(但我仍然希望它反弹)。刚刚设置:

scroll.alwaysBounceVertical/Horizontal = YES;

它按预期工作

【讨论】:

当您在滚动视图上有一个刷新控件但没有足够的弹跳控件时非常有用(这会阻止刷新控件工作)。【参考方案3】:

事实证明,将 UIScrollView 保留在我的自定义 UIView 中会导致问题。

一旦我将自定义 UIView 切换为从 UIScrollView 继承,然后弹跳就开始工作了。

【讨论】:

我遇到了嵌套 UIScrollViews 的问题。我检查了在调用 layoutSubviews 作为 openradar 链接状态时没有不必要地修改子视图的框架,并且我还使用 UIScrollView 子类作为不弹跳的内部滚动视图【参考方案4】:

这很有趣...当用户滚动滚动视图时是否发生了很多事情?也许这可能会导致问题。 iPhone可以多任务处理,但不能太多。我可以看到你的整个代码与滚动视图有关吗?

【讨论】:

没有什么有趣的事情发生!只有一个滚动视图,其中添加了一个大 UIView 作为子视图,其框架的大小与滚动视图的内容大小相同。子视图有一堆自定义 UIViews 作为孩子。

以上是关于UIScrollView 不反弹的主要内容,如果未能解决你的问题,请参考以下文章

即使使用单个项目,也强制 uiscrollview 反弹滚动

UIScrollView 反弹回来

UIScrollView 内的 UIVIew 反弹回来

iOS UIScrollView 总是反弹回来

UIScrollView 在内容小于视图大小时反弹

如何在 UIScrollView 的“反弹”区域中绘制?