1

如下图所示,我的应用程序有几个UIView BCD并排,并且都包含在一个封装的 UIView 中A

在此处输入图像描述

UIPinchGestureRecognizerB,C和中都有一个D。我还想做的是识别整个区域的不同手势A(不妨碍其他手势识别器的工作)。

最好的策略是什么?我的目标是 iOS5+,不需要向后兼容。

还值得注意的是,手势识别器A可能必须是自定义手势识别器,因为我想检测捏合但涉及 > 2 个手指。

想法:

如果安装手势识别A器效果不佳,则可以通过使用touchesBeganetc 以旧方式进行操作。正如UIResponder文档所指出的,您可以拥有一个UIViewjust call的子类,[super touchesBegan:touches withEvent:event]如果您将其传递到响应者链中'对触摸不感兴趣。

4

2 回答 2

0

It turns out just adding gesture recognizers in the straightforward obvious way works, at least for the gestures I want to recognize. I imagined it would be more complicated.

于 2012-04-17T15:47:28.570 回答
0

像往常一样将 GestureRecognize 添加到 A 中。

现在您需要先对触摸的内容进行命中测试。

首先,您需要测试项目的 z-index。例如,如果您触摸 B,那么您的函数将对所有受影响的项目进行循环/命中测试,在本例中为 A 和 B。在您的函数检测到 A 和 B(B 超过 A)命中测试后,它应该检查 z 索引。例如 B 的 z-index 是 2,那么 A z-index 是 1。现在您知道 B 是用户想要触摸的东西,因为它的 z-index 更高,这意味着它在顶部。

在确定了目标(B)之后,在执行它的 GestureRecognize 之前,您需要暂时禁用 A 的 GestureRecognize 以消除重叠的 GestureRecognize 之间的任何冲突。在 B 触摸完成/结束后,启用 A 的 GestureRecognize。

于 2012-04-14T11:10:32.053 回答