UIScrollView:单击可将其滚动到顶部

ind*_*ess 5 iphone paging uiscrollview

我将UIScrollView与pagingEnabled设置为YES,并以编程方式将其内容滚动到底部:

CGPoint contentOffset = scrollView.contentOffset;
contentOffset.y = scrollView.contentSize.height - scrollView.frame.size.height;
[scrollView setContentOffset:contentOffset animated:YES];
Run Code Online (Sandbox Code Playgroud)

它成功滚动,但在此之后,单击它的内容会向上滚动,以便在它向下滚动之前进行偏移.只有在我将scrollView的内容滚动到底部然后点击时才会发生这种情况.当我滚动到任何其他偏移然后点击时,没有任何事情发生.

这绝对不是我想要的.应如何解决?

非常感谢提前!

帖木儿.

Tom*_*asz 6

这个小小的黑客可以防止UIScrollView在点击时滚动.当滚动视图启用了分页时,看起来会发生这种情况.

在您的UIScrollView委托中添加以下方法:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    scrollView.pagingEnabled = self.scrollView.contentOffset.x < (self.scrollView.contentSize.width - self.scrollView.frame.size.width);
}
Run Code Online (Sandbox Code Playgroud)

当滚动视图在水平滚动中到达右端时,这将禁用分页(我的用例,您可以轻松地将其调整到其他方向).


小智 5

我刚刚弄清楚是什么导致了这个问题,以及如何避免它。如果在滚动视图上将 pagingEnabled 设置为 YES,则必须将 contentOffset 设置为滚动视图可见大小的倍数(即您应该在分页边界上)。

具体例子:

如果您的滚动视图(例如)高 460 像素,内容区域为 920,如果您想避免“滚动到点击开始”问题,则需要将内容偏移设置为 0 或 460。

作为奖励,最终结果可能看起来更好,因为您的滚动视图将与分页边界对齐。:)


Eva*_*ski 1

这似乎是一个错误:

UIScrollView 不记得位置

我已经在 iOS 4.2(模拟器)上对此进行了测试,问题仍然存在。