1

嗨,我有内容有图像的 CALayer。现在我需要在其上添加 Tap 手势。怎么可能请给出任何例子来为CALayer添加Tap。

这是我的代码:

CALayer *imageLayer=[CALayer layer];
imageLayer.frame=frame;
imageLayer.cornerRadius=10.0;
imageLayer.borderWidth=2.0;
imageLayer.borderColor=[UIColor colorWithRed:0.957 green:0.957 blue:0.957 alpha:1].CGColor;
CALayer *imagecontent=[CALayer layer];
imagecontent.frame=CGRectMake(16, 26, 153, 153);
UIImage *image=[self.pageImages objectAtIndex:page];
imagecontent.contents=(id)image.CGImage;
imagecontent.masksToBounds = YES;   
[imageLayer addSublayer:imagecontent];
[self.scrollView.layer addSublayer:imageLayer];

在这里,我想为“图像内容”添加点击手势,请帮助我。

4

2 回答 2

1

您无法将手势识别器添加到图层,因此您需要将手势识别器添加到其包含的视图中,然后执行附加测试以查看点击是否恰好与相关图层重叠。

将点击手势识别器添加到图层的父视图(假设它被调用parentView),然后将此代码添加到手势识别器的选择器中:

- (void)handleTap:(UITapGestureRecognizer *)sender {
    CGRect layerFrame = CGRectMake(16, 26, 153, 153);
    CGPoint tapPoint = [sender locationInView:parentView];
    if (CGRectContainsPoint(layerRect, tapPoint)) {
        // The tap happened inside the rectangle of your layer
        ...
    }
}
于 2012-08-08T13:58:58.257 回答
0

您也可以在 CALayer 上执行 hitTest: 以检查您是否正在点击该图层。只需查看苹果文档中的 hittest 即可。

于 2012-08-08T19:03:19.187 回答