我有一个UIScrollView,它包含任意数量的缩略图,可以检测触摸事件,对自己执行3D转换并调用委托方法。
我无法克服的一个问题是检测正在点击哪个子层。我将layer.name设置为索引计数,UIScrollView的子类确实获得了触摸事件。现在最后一个障碍是如何在子图层上执行hitTest以获取名称属性和瞧!
我在考虑将UIView子类化为CALayer的容器并以这种方式捕获触摸事件。但我希望可能有更经济的方法来确定被触摸的子层。
我一直在尝试的代码(在我的UIScrollView子类中):
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
if ([touches count] == 1) {
for (UITouch *touch in touches) {
CGPoint point = [touch locationInView:[touch view]];
CALayer *alayer = [self.layer hitTest:point];
if (alayer) NSLog(@"layer %@ touched",alayer.name);
else NSLog(@"layer not detected");
}
}
}
我收到两个编译错误。首先警告:没有找到hitTest方法。并且错误“请求成员'名称'不是结构或联合”。
答案 0 :(得分:2)
致电[scrollView.layer hitTest:touchPoint];
。返回值将是触摸的图层。如果返回的图层等于scrollView.layer
,则不会点击任何子图层。