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