UIScrollView 总是弹回顶部

Posted

技术标签:

【中文标题】UIScrollView 总是弹回顶部【英文标题】:UIScrollView Always Bounces back to Top 【发布时间】:2014-07-15 02:11:47 【问题描述】:

我看过其他几篇关于此的帖子,并尝试实施他们的建议,但我仍然遇到同样的问题。我有一个UIScrollView,其中包含一个UIContentView,它又包含各种标签和一个UIWebView。内容滚动得很好,但对于屏幕来说太长了(按设计 - 这就是我使用滚动视图的原因)。当我的手指滑到屏幕顶部时,我需要松开手指并将手指移到底部才能继续滚动。我放开屏幕的那一刻,内容弹回顶部,从而否定了我所做的滚动。这使得无法看到更远的剩余信息。

我知道我的UIContentView 的高度大于最后一个对象的最大 y 值。我用一些 NSLog 语句验证了这一点,以打印出最后一个 y 值是什么。我还可能缺少什么?我已经让许多其他 UIScrollViews 工作了,所以我不知道我在这里忽略了什么。

谢谢!

- (void) viewDidLayoutSubviews

    [super viewDidLayoutSubviews];
    [self.scrollView layoutIfNeeded];
    self.scrollView.contentSize = self.contentView.bounds.size;

【问题讨论】:

【参考方案1】:

您不应该在viewDidLayoutSubviews 中这样做。假设contentView 的大小是固定的,并且没有被自动调整大小或被自动布局更改,那么你可以放行

self.scrollView.contentSize = self.contentView.bounds.size;

viewDidLoad 方法中。

layoutIfNeeded 行没有任何作用,应该删除。

【讨论】:

谢谢,但这不起作用。一旦我将该行移动到viewDidLoad,我就完全失去了所有滚动能力。视图根本不会移动。 我对这类事情的调试策略是在屏幕上放一个按钮,然后 NSLog scrollView.framescrollView.contentSizecontentView.frame 以响应按钮按下。这应该告诉你你需要知道的一切,并保证所有布局代码都有机会在打印尺寸之前完成。

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

UIScrollView 不会在特定点停止,它会弹回顶部

iPad UITableView 滚动弹回顶部

iOS UIScrollView 总是反弹回来

UIScrollview 内容总是在顶部

iPhone + UIScrollView

UIWebView 的 UIScrollView 子视图可以滚动但会弹回框架而不出现垂直滚动指示器