在 iOS6 地图视图中选择图钉时遇到一个神秘问题
顺便说一句,它在 iOS 5 中正常工作,我不确定它们在 iOS 6 的地图中发生了什么变化,从而产生了这个问题。
请注意,当我单击地图时,标注直接越过大头针并正确显示
任何帮助/线索将不胜感激,
提前致谢
答案可能会有所不同,具体取决于您如何实现自定义标注气泡。这是/是我正在使用的解决方案:自定义 MKAnnotationView 标注,我遇到了完全相同的问题。
基本上,每次标注要显示时,我都必须将子视图放在前面。
在这种情况下,我的自定义标注气泡是一个名为“BaseCalloutView”的类,其中包含一个 UIView 作为其 ContentView 属性(如您在上面链接的 UML 图中所见)。选择注释时,它会触发 BaseCalloutView 的“animateIn”函数,我在其中添加了:
[self.superview bringSubviewToFront:self];
正如我所提到的,您的里程可能会有所不同,具体取决于您实施自定义标注气泡的方式。如果需要,我可以为您提供完整的代码 - 但老实说,我 90% 的代码来自上面的链接。
在 IOS 5 和 IOS 6 中,我试试这个,没关系
该图钉永远不会与 CalloutView 重叠。我使用自定义 calloutview ,在文件 Base calloutView 中添加:
- (void)didMoveToSuperview {
[super didMoveToSuperview];
[self.superview bringSubviewToFront:self];
}
我正在使用相同的代码库,遇到了同样的问题。[self.superview 带来SubviewToFront:self]; 对我不起作用,无论我把它放在哪里。[annimateIn] 或 [didMoveToSuperView] 或 [layoutIfNeeded]
因为这个问题通过手指稍微移动一下地图就解决了,所以我发现很容易通过将代码放入 - (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view 来模拟这种效果。偏移量很小,根本看不到任何视觉运动。
CLLocationCoordinate2D newCenterCoordinate = {self.mapView.region.center.latitude + 0.0000001,
self.mapView.region.center.longitude + 0.0000001};
[self.mapView setCenterCoordinate:newCenterCoordinate animated:NO];