查看手势处理:检测大视图上的手势,该视图是小视图的子视图

时间:2014-11-10 21:05:48

标签: ios uiview uigesturerecognizer uiresponder

我对UIViews的手势处理感到困惑,

假设视图层次结构中有三个视图。

如图所示:

enter image description here

V1 (Grey) 
 | 
 + V2 (Orange)
    |
    + V3 (Red)

每个视图都有一个附加的点按手势,

V1有gesture1

V2有gesture2

V3有gesture3

V3过大,超出了V2。

下面的图片显示了哪个手势被回复。

enter image description here

我的问题是V3的部分手势超出了V2的范围:

为什么回应g1而不是g3?以及如何让g3回应?

注意:我还设置v3.userInteractionEnabled = true,不起作用

1 个答案:

答案 0 :(得分:1)

您无法接收视图范围之外的事件。你的橙色视图不会收到事件;因此,它不会将事件传递给您的红色视图。

为了实现这一目标,您需要使用对橙色视图和红色视图进行分组的公共父级来修正视图层次结构,但是要足够大以适应两者,或者只是将手势识别器附加到灰色超级视图然后将触摸的位置与视图的边界进行比较。