如下图所示,我的应用程序有几个UIViews,B
,C
和D
并排,并且全部包含在一个包络的UIView {{1}中}:
A
,UIPinchGestureRecognizer
和B
分别有C
。我还想做的是在整个区域D
识别不同的手势(不妨碍其他手势识别器的工作)。
最佳策略是什么?我的目标是iOS5 +,不需要向后兼容性。
同样值得注意的是A
的手势识别器可能必须是自定义手势识别器,因为我想要检测到捏但是>涉及2个手指。
思想:
如果为A
安装手势识别器效果不佳,则可以使用A
等以旧方式执行此操作。如UIResponder
docs注释,您可以有一个touchesBegan
的子类只需调用UIView
,如果你对触摸不感兴趣,就可以在响应者链中传递它。
答案 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)
事实证明,只是以简单直观的方式添加手势识别器,至少对于我想要识别的手势。我想它会更复杂。