我对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;
}
感谢您帮助我, 斯蒂芬
答案 0 :(得分:3)
刚从Apple的sombody得到这个答案:“这是一个已知的问题,将在未来的iPhone SDK版本中修复。如果你能够测试它,你应该发现它已经修复了当前的测试版如果你仍然遇到麻烦,请提交新的错误。“
答案 1 :(得分:0)
这里也是同样的问题。
调用setContentOffset是一种不一致:在scrollViewDidScroll:里面,它只更新tableview的contentOffset,直到下一次调用scrollViewDidScroll:。
我意识到这个错误只发生在用户没有拖动tableview时(仅减速)。
在我的情况下,仅在用户拖动时更新解决了问题。
希望它有所帮助。
答案 2 :(得分:-1)
问题是UIScrollView的设计并不是无穷无尽的。它的内容大小有限。你确定CGFLOAT_MAX(340282346638528859811704183484516925440)对于你的滚动视图来说太小了吗?