带有 UIScrollView 的 UIPanGestureRecognizer

Posted

技术标签:

【中文标题】带有 UIScrollView 的 UIPanGestureRecognizer【英文标题】:UIPanGestureRecognizer with UIScrollView 【发布时间】:2013-02-22 21:38:02 【问题描述】:

我已经和 UIScrollView 斗争了一段时间了。 我有一个滚动视图,其中有多个“卡片”样式视图。我希望卡片垂直移动,就像上下滑动一样。

想象一下 MobileSafari 的标签视图,但要向下滑动以关闭标签。

如果不与滚动视图水平平移发生冲突,我无法弄清楚如何做到这一点。 我要么让它们都平移,要么只平移一次(垂直/水平)。

使这项工作完美运行的最佳做法是什么,例如“如果您正在垂直滑动,请停止水平滑动,如果您正在水平滑动,请停止垂直滑动”。

谢谢!

这是我想要的插图:

【问题讨论】:

【参考方案1】:

滚动视图有它自己的手势识别器:参见它的panGestureRecognizer 属性。如果您添加自己的识别器来检测垂直滑动,您可以使用requireGestureRecognizerToFail: 或delegate methods 来管理两个识别器之间的依赖关系。

【讨论】:

【参考方案2】:

我对您的应用程序在此处的预期行为感到非常困惑。您可以互换使用滑动和平移,但它们是不同的手势识别器。

区分的一种方法是比较手势的translationInView: 方法的x 和y 值。如果 y > x,你有一个垂直滑动/平移; x > y 并且你有一个水平滑动/平移。

如果检测到的滑动/平移不是您要查找的类型,则使手势识别器失败。

【讨论】:

以上是关于带有 UIScrollView 的 UIPanGestureRecognizer的主要内容,如果未能解决你的问题,请参考以下文章

带有 IUViewController 的 UIScrollView 拖放对象

带有 ViewControllers 的 UIScrollView

带有 UIScrollView 的纯自动布局

带有 UIScrollView 的 ECSlidingViewController

带有 UIScrollView 的 UIPanGestureRecognizer

带有背景图像的 UIScrollView