Ios 使用不同的位置管理UIView中的手势

Ios 使用不同的位置管理UIView中的手势,ios,objective-c,calayer,gesture,Ios,Objective C,Calayer,Gesture,我有一些位于不同位置的UIView。这样做的目的是在表达观点的时候有一种深度的感觉。所有视图的图层都是MainView.layer的子图层。我想做的是在我的视图中添加手势,这样他们可以在被触摸时对手势做出反应。 我在ViewController中执行了以下操作: UIImageView *top = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"l.png"] ]; top.frame = CGRectMake(300, 500

我有一些位于不同位置的UIView。这样做的目的是在表达观点的时候有一种深度的感觉。所有视图的图层都是MainView.layer的子图层。我想做的是在我的视图中添加手势,这样他们可以在被触摸时对手势做出反应。 我在ViewController中执行了以下操作:

UIImageView *top = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"l.png"] ];
top.frame = CGRectMake(300, 500, 400, 200);
top.layer.zPosition = 100;
[self.view.layer addSublayer:view.layer];

UIImageView *mid = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"g1.png"] ];
mid.frame = CGRectMake(200, 100, 400, 800);
mid.layer.zPosition = 0;
[self.view.layer addSublayer:view.layer];

UIImageView *back = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"3a.png"] ];
back.frame = CGRectMake(500, 100, 570, 800);
back.layer.zPosition = -100;
[self.view.layer addSublayer:view.layer];
当我尝试这个:

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
[back addGestureRecognizer:tap];

水龙头坏了。有什么建议吗?

UIgestureRecognitor
仅适用于视图
back
是视图,但在层次结构中添加时,只添加其层
我不明白谁是
视图
,因为您继续更改zposition,但它的来源不可见。
您无需创建UIImageView即可在图层上显示图像,只需创建图层并更改其内容属性,如下所示:

CALayer * layer = [CALayer layer];
layer.frame = ...
layer.contents = (id)[UIImage imageNamed:@"3a.png"].CGImage;

“handleTap”正在执行吗?你把它记录下来了吗?另外,使用@selector(handleTap:)--注意冒号--将UITapGestureRecognitor传递给handleTap方法。handleTap未执行。我在那里写的NSLog行没有打印出来。(谢谢你的更正。我认为重新键入不是一个好主意。在原始代码中冒号确实出现)你能在屏幕上看到“back”吗,它的500像素xOrigin会让它离屏幕180像素。是的,即使我看不到整个视图,我也能看到它的一部分。我想这不是问题所在。谢谢你的回答。正如我在重新键入代码之前所说的,我应该复制它。我已经编辑过了。对不起。那么,我应该管理每个UIImageView的CALayer中的手势吗?不,手势仅用于视图,不用于层。您可以将手势添加到“主视图”中,并通过检查层框架的点击坐标来查找发生在哪个层中。如果你把每件事都放平,你想要达到的深刻效果就永远不会显现出来。你应该在一个特殊的层CATTransfermLayer中托管所有内容,我想要达到的效果几乎与我所采取的方法一致。我使用了一种视差效果,允许水平平移,所以不同层的视图以不同的速度滚动。现在我的问题是管理每个特定视图中的其他手势。有没有办法在不同的位置添加视图?不仅是图层,还是我应该使用UIResponder来检测触摸发生的位置,并根据该位置确定哪个视图正在接收触摸?谢谢