iPhone UIScrollView/setContentOffset很奇怪

bib*_*bac 5 iphone cocoa-touch uiscrollview uikit

我有setContentOffset一个奇怪的问题,我似乎不能够解决:我试图建立一个"永无止境"滚动视图,所以我想内容在某个位置的偏移复位.使用下面的代码,setContentOffset将在x = 160px时调用.如果我拖动滚动视图,我的日志看起来像这样:

抵消:158

抵消:159

抵消:160

抵消:80

抵消:160

发生的是我的setContentOffset(到80)被执行,当我继续拖动UIScrollView时似乎忘记了它并继续在160.甚至更奇怪:当我设置动画:是的它有效.也许是时间问题?当我从scrollViewDidScroll中调用setContentOffset时,将再次调用scrollViewDidScroll.

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
 NSInteger tileNo = floor(scrollView.contentOffset.x / 80);
 NSLog(@"offset: %f, tile: %d, lastTile: %d", scrollView.contentOffset.x, tileNo, lastTileNo);

 if (tileNo > lastTileNo) {
      [scrollView setContentOffset:CGPointMake(80, 0) animated:NO];
 }

 lastTileNo = tileNo;
Run Code Online (Sandbox Code Playgroud)

}

谢谢你帮助我,斯蒂芬

Ste*_*ntz -1

问题是 UIScrollView 的设计并不是无限的。它对其内容大小有硬性限制。您确定 CGFLOAT_MAX (340282346638528859811704183484516925440) 对于您的滚动视图来说太小了吗?