我有一个包含多个CALayer子类的UIView。我正在使用以下代码来检测触摸事件对应于哪个图层:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint touchPoint = [touch locationInView:self];
NSLog(@"%@,%@",NSStringFromCGPoint(point),[self.layer hitTest:point].name);
}
这在设备没有旋转时可以正常工作。但一旦旋转设备,所有当前图层都将从超级图层中删除,并创建新的CALayer以适应新方向。新层被正确地插入并在正确方向上可见。
旋转后,hitTest方法始终返回该层的null值。我注意到当旋转180度时,返回的层是旋转前该位置的层,即触摸左上角图层会在旋转180度后给出右下角的图层。hit测试的坐标按预期打印,其中(0,0)在左上角。我在每次旋转时重新绘制图层,但由于某种原因它们似乎被映射为“正确”方式,Home键在底部。我是否错过了旋转处理后的函数调用或其他一些内容?
谢谢, Adam