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