带有 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 的 ECSlidingViewController