在多个UIGestureRecognizer实例之间拆分触摸序列

时间:2010-10-16 18:55:43

标签: iphone ipad drag-and-drop ios uigesturerecognizer

我正在开发支持在表格视图之间拖动项目的iPhone / iPad应用程序。由于所有表格都不适合屏幕,我编写了一个自定义UIScrollView,可以将它们水平放置,并支持分页。

虽然我已经完成了主要的拖放工作,但还有一些我无法解决的问题。

  1. 用户选择了要拖动的项目并进行拖动后,他们无法滚动UIScrollView以查找目的地UITableView

  2. 有时,用户会希望将拖到同一个表视图中。但是一旦拖动开始,表格视图就不再能识别滚动手势。

  3. 我尝试了各种不同的选项,包括实现UIGestureRecognizerDelegate并允许多个手势识别器同时识别手势。

    问题,正如我所看到的那样源于事件处理指南中的这种描述:“iOS识别一个或多个手指触摸屏幕作为多点触控序列的一部分。当第一个手指触及屏幕时,此序列开始当最后一根手指从屏幕上抬起时结束。“

    UIGestureRecognizer个实例始终与整个序列匹配。在我的情况下,我想将单个序列拆分为离散手势 - 一些触摸识别拖动项目,而同一序列中的不同触摸应该被识别为滑动或滚动手势。实际上,我希望我的手势识别器能够同时识别,但只能不同的触摸。一旦人们将触摸识别为手势的一部分,其他人就应该忽略该触摸。

    我还没有找到一种方法来使用默认的UIGestureRecognizer子类连贯地解决所有这些问题,现在我要编写自己的自定义多部分手势识别器。

    我宁愿不必 - 有没有更合适的方法来达到相同的结果呢?

1 个答案:

答案 0 :(得分:2)

鉴于此处的沉默以及我刚刚发现的博客文章,我相信答案是,没有办法用标准框架进行子手势识别。

对于那些希望做类似事情的人,请看一下这个项目/博客文章,这是尝试创建一个子手势识别库:

http://sunetos.com/items/2010/10/31/adding-subgestures-to-ios-gesture-recognition/

我还没有使用它 - 我最终手动制作了我自己的迭代 - 但是如果它实现了,我会考虑重构使用它。