在iOS5中检测重叠屏幕区域上的手势

时间:2012-04-14 10:41:03

标签: ipad ios5 uigesturerecognizer

如下图所示,我的应用程序有几个UIViews,BCD并排,并且全部包含在一个包络的​​UIView {{1}中}:

enter image description here

AUIPinchGestureRecognizerB分别有C。我还想做的是在整个区域D识别不同的手势(不妨碍其他手势识别器的工作)。

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

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

思想:

如果为A安装手势识别器效果不佳,则可以使用A等以旧方式执行此操作。如UIResponder docs注释,您可以有一个touchesBegan的子类只需调用UIView,如果你对触摸不感兴趣,就可以在响应者链中传递它。

2 个答案:

答案 0 :(得分:0)

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

现在你需要先点击测试所触及的内容。

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

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

答案 1 :(得分:0)

事实证明,只是以简单直观的方式添加手势识别器,至少对于我想要识别的手势。我想它会更复杂。