2

好吧,在以下情况下会调用委托:

  • 滚动视图开始滚动
  • 初始化滚动运动后从滚动视图中抬起的手指
  • 滚动视图停止减速

但现在的问题是,如果你想在滚动时回收那些视图,你必须在滚动期间非常快地做到这一点。当用户滚动时,某些东西必须触发一种方法,该方法将从上到下或从下到上删除一个或三个视图。

问题:

  • 用户可能滚动非常慢或非常快。我不知道。

  • 滚动开始后,我必须每秒检查 50 次偏移量,并确定是否该回收视图。下一个问题是,如何每秒调用 50 次方法,以及如何在滚动停止时停止该方法。

你知道哪些模式可以解决这个问题?我确信那里有一些好的。

4

3 回答 3

2

事实上,scrollViewDidScroll方法是在滚动过程中连续调用的,而不是在手指抬起时。(实际上每次contentOffset更改时都会调用它,无论是因为用户滚动还是程序更改。)因此您可以安全地使用它来回收视图。

确保在距当前视图一个屏幕大小的距离内预加载视图,因为用户可能会在一个手势中滚动一个屏幕宽度或高度距离。

当然,如果你要垂直排列你的视图,UITableView 是你的朋友,它会为你做回收。(如果您有兴趣,它还支持可变高度行。)

于 2009-05-10T01:23:04.117 回答
2

如果启用了分页,那么您的代表会收到一个

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

当滚动处于页面边界时,这是回收视图的好时机。否则,您将不得不监视委托中的内容偏移量

- (void)scrollViewDidScroll:(UIScrollView *)scrollView;

并确定何时可以回收视图。

于 2009-05-10T08:51:01.887 回答
2

表格视图非常适合这种事情,而且非常灵活。

于 2009-05-07T23:13:20.417 回答