3

这是我的代码....

UIView *View1 = [[UIView alloc] initWithFrame:CGRectMake(0, 300, 1000, 150)];
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(callTap)];
[View1 addGestureRecognizer:tap];
view1.userInteractionEnabled = true;
view1.layer.zPosition=1;
[self.view addSubview:view1];

UIView *View2 = [[UIView alloc] initWithFrame:CGRectMake(0, 300, 1000, 150)];
UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(callPinch)];
[View2 addGestureRecognizer:pinch];
View2.userInteractionEnabled= true;
View2.layer.zPosition=2;
[self.view addSubview:View2];

UIView *View3 = [[UIView alloc] initWithFrame:CGRectMake(0, 300, 1000, 150)];
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(callPan)];
[View3 addGestureRecognizer:pan];
View3.userInteractionEnabled=true;
View3.layer.zPosition=3;
[self.view addSubview:View3];

我想让视图只识别代码中添加的单个手势并将其他手势传递给下面的视图....
如何实现此功能?

4

1 回答 1

6

这个问题很容易回答......
当在 ios 中识别手势时,最顶层的视图总是会收到用户的触摸,所以手势识别取决于你的子视图是如何堆叠的,这意味着它在 SuperView 的属性中是如何排列的命名子视图....如果多个子视图保持屏幕的相同接触点,则子视图中具有较高索引值的视图将获得触摸..通常具有较高索引值的视图也将在其他视图之上可见....

当涉及到 ZPosition 时,它会变得很有趣。将 ZPosition 更改为更高的值会使视图可见,而不会对索引位置进行任何更改。所以在这种情况下,索引零上的子视图也可能完全可见,但它没有这意味着它将接收所有的触摸,因为它仍然在零索引上......如果你想让零索引子视图接收所有的触摸,那么使用 UIView 类的方法将它置于其他之上.. ...
不要同时使用 Gesture 和 ZPosition,这可能会使用户在与您的应用程序交互时感到困惑。

于 2013-04-04T09:22:56.227 回答