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.frame
、scrollView.contentSize
和 contentView.frame
以响应按钮按下。这应该告诉你你需要知道的一切,并保证所有布局代码都有机会在打印尺寸之前完成。以上是关于UIScrollView 总是弹回顶部的主要内容,如果未能解决你的问题,请参考以下文章