设置:我有一个 UITableView
,每个 UITableViewCell
都有一个 UIScrollView
。我想要做的是让所有 UIScrollViews
一起滚动,这样当你滚动其中一个时,所有 UIScrollViews
似乎同时滚动。
我所做的是将 UITableView
子类化,以便它在其表格单元格中有一个包含所有 UIScrollViews
的数组。然后我将 TouchesBegan
、 TouchesMoved
、 TouchesCancelled
和 TouchesEnded
从 UITableView
转发到数组中的所有 UIScrollViews
。
这似乎不起作用。 UIScrollViews
不滚动!我设法让它工作的唯一方法是在滚动 View 上调用 setContentOffset
: 方法。但是,这是一个非常糟糕的解决方案,因为它没有为您提供 UIScrollView
的滑动和减速功能。
关于为什么我的触摸方法没有进入 UIScrollViews
的任何想法?或者更好的方法来实现这一点?
最佳答案
好的,开始工作了。感谢瑞奇的提示!
要添加到 Ricki 的解决方案中的 2 件事,如果要避免无限循环,则必须检查是否设置了 scrollView 的跟踪或拖动属性。这将确保只有实际被拖动的 ScrollView 正在调用委托(delegate)。
- (void)scrollViewDidScroll:(UIScrollView *) theScrollView {
if (theScrollView.dragging || theScrollView.tracking)
[self.delegate scrolling:[theScrollView contentOffSet]];
}
此外,在委托(delegate)的滚动方法中,我将动画设置为 NO,这消除了初始滑动和其他滚动 View 更新之间的延迟。
关于iphone - 如何一起滚动一组 UIScrollViews?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2367153/