使用不同的zPosition管理UIViews中的手势

时间:2014-03-07 18:08:32

标签: ios objective-c calayer gesture

我有一些UIViews位于不同的zPositions。这个想法是在呈现观点时有深度感。所有视图的图层都是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];

点按不起作用。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

UIGestureRecognizer仅适用于观看次数。 back是视图,但是当您在层次结构中添加时,只会添加其图层。
我不明白谁是view,因为你继续改变zposition,但是它来自哪里不可见。
您不需要创建UIImageView来在图层上显示图像,您只需创建一个图层并更改其内容属性,如下所示:

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