2
我有一个UIView包含一些CALayer子类。我正在使用以下代码来检测触摸事件对应的图层:iPhone hitTest轮换后损坏
- (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)在左上角。我在每次旋转时重绘图层,但出于某种原因,它们似乎被映射为“正确”的方式,底部的主页按钮就是这样。处理旋转后,我是否缺少函数调用?
干杯, 亚当