【发布时间】:2015-09-09 17:52:46
【问题描述】:
第二次更新感谢@Segev 的评论和对另一个主题的引用,我能够改进我的demo 使其基本上可以满足我的需求。但是,它仍然不如 Instagram 的实现那么顺利,我想知道是否有人知道如何改进它以使其更流畅?另外,我注意到有时(在我的演示中),当我向左/向右滑动非常快并且我想切换到向上/向下滑动时,它仍然会继续向左/向右滑动,直到我停止滑动并让它先停下来。
更新:通过从 UIScrollView 继承并从 UIGestureRecognizerDelegate 实现 shouldRecognizeSimultaneouslyWithGestureRecognizer 和 shouldBeRequiredToFailByGestureRecognizer 方法,我能够让表格视图在停止向上/向下滚动后向左/向右滑动。我的想法是,如果用户向上/向下滚动 tableView,则在 shouldRecognizeSimultaneouslyWithGestureRecognizer 中返回 true,然后在 shouldBeRequiredToFailByGestureRecognizer 中返回 true,以使表格视图的向上/向下手势失败。
但我仍然无法弄清楚如何让用户在停止初始向上/向下滚动后向上/向下或向左/向右滚动(并且用户的手指仍在设备上)。
我在这里创建了一个示例项目https://github.com/paulsfds/TableViewsInScrollView。您可以通过在表格视图上向下滑动一次来测试这一点,然后松开手指,在它仍在滚动时,将手指放回以停止滚动。当您的手指仍在表格视图上时,尝试向左/向右滑动,它应该可以工作。但是在这个实现中,如果您尝试多次向下滑动表格视图,它有时会卡住,因为它会认为您正在尝试向左/向右滑动。有什么想法吗?
原文:我有几个 UITableView,它们位于启用了分页的 UIScrollView 中,并设置为让我左右分页,这样一次只能看到一个 UITableView。这是一张图(取自Conflictive scroll on UITableView within UIScrollView)
+--visible area--+ ---+
+---------`UIScrollView`---------+---------------+| --+|
| +-------------+ +-------------+|+-------------+|| -+||
| | 0 | | 1 ||| 2 ||| |||
| |`UITableView`| |`UITableView`|||`UITableView`||| equal height
| | | | ||| ||| |||
| +-------------+ +-------------+|+-------------+|| -+||
+--------------------------------+---------------+| --+|
+----------------+ ---+
我想要实现的是,如果用户向下滚动表格视图,然后松开手指(并且向下滚动动画仍在发生),用户可以选择左右滑动进入下一个表视图。现在,如果用户向下滚动表格视图,然后抬起手指,而向下滚动动画仍在播放,然后再放回手指以左右滑动,则不允许用户向左和向右滚动对,除非我等待表格视图滚动完全停止,然后左右滑动,否则我无法查看已经可见的表格视图。
TL;DR 基本上我不能同时向上/向下滚动表格并在滚动视图中向左/向右滑动,但我希望能够做到这一点。这方面的一个例子是在 iOS Instagram 应用程序中的“活动”选项卡上。您可以在表格视图仍在滚动时向下滚动然后向右滑动。
【问题讨论】:
-
您是否考虑过使用 UICollectionView 而不是 UIScrollView?我还没有使用过这种方法,但根据我的经验,我几乎总是能够用 UICollectionView 代替 UIScrollView 的使用(通常更省力。)
-
我还没有考虑过,但我认为我仍然会遇到 UICollectionView 手势与内部 UITableView 手势冲突的相同问题?
-
看起来您已经找到了解决方案,根据下面提供的链接,它可能只需要几分钟就可以解决。无论如何,我以前没有真正尝试过。所以我花了几分钟时间来模拟一个collectionView,它有一个包含tableView的单元格子类,配置了dataSources和delegate,并试了一下。所以回答你的问题:不,滑动手势在滚动或分页时不会相互冲突。
-
在提供我自己的答案后,我刚刚回去阅读了您问题的更新。如果你有时间重新设计你的实现,那么你应该试一试。我对动画的流畅度没有任何问题,而且无论你如何用力滑动,一次只能得到一页。
标签: ios uitableview uiscrollview uigesturerecognizer