MKMapView自定义气泡弹出视图(iOS 6)

4
在iOS6的mapview中选择一个pin时,我遇到了一个神秘的问题。顺便说一句,在iOS5中它是正常的,我不确定他们在iOS6的地图上做了什么才会出现这个问题。请注意,当我点击地图时,弹出框直接覆盖在标记上并正确显示。如果有任何帮助或线索,将不胜感激。谢谢!

请查看此链接,它可能会在某种程度上帮助您...https://dev59.com/_GvXa4cB1Zd3GeqPImb1#13716621 - 08442
4个回答

6
答案可能会因您如何实现自定义弹出气泡而有所不同。这是我使用的解决方案:自定义MKAnnotationView弹出气泡,我遇到了完全相同的问题。
基本上,每次要显示弹出气泡时,我都必须将子视图置于最前面。
在这种情况下,我的自定义弹出气泡是一个名为“BaseCalloutView”的类,其中包含一个UIView作为其ContentView属性(正如您可以在上面链接中看到的UML图表中)。当选择注释时,它会触发BaseCalloutView的“animateIn”函数,其中我添加了以下内容:
[self.superview bringSubviewToFront:self];

正如我所提到的,您实现自定义标注泡泡的方式可能会有所不同。如果需要,我可以提供完整代码 - 但是老实说,我的90%代码来自上面提供的链接。


实际上,我已经实现了地图的委托区域方法,并将此代码放在其中,同时在绘制标注的矩形后添加了此代码([self.superview bringSubviewToFront:self])。在大多数情况下它都有效,但是当我在显示标注时不断点击地图时,已经点击过的标记仍然会出现在标注上方,当我松开手时它们才返回到标注上。我认为在尝试更改地图区域时发生了一些奇怪的事情! - Maystro
当您说在显示弹出窗口时单击地图时,这是否意味着单击地图不会使弹出窗口消失?从技术上讲,这应该等同于取消选择注释并隐藏弹出气泡。 - Jai Govindani
是的,它等同于取消注释,但当我在地图上单击并按住屏幕时会出现问题。当我释放时,问题消失了,这是有道理的,因为我在地图的2个代理区域方法中添加了[self.superview bringSubviewToFront:self],但是如何找出为什么问题还会出现,而我手指点击地图时保持不动呢? - Maystro
我会尝试在我的代码中重新创建这个问题,考虑到你的方法与我的不同,我会看看我能找出什么。从我的经验来看,我认为你可能在某个地方删除并重新添加注释,导致它们被重新添加到你的自定义弹出气泡上方,或者显示在顶部的注释是通过你使用的相同代码带到前面的。将弹出窗口置于前台。 - Jai Govindani
如果您能够发布/共享您用于此特定实现的代码,那将非常有帮助。 - Jai Govindani

0
在IOS 5和IOS 6中,我尝试了这个方法,它可以正常工作。
大头针永远不会重叠CalloutView。 我使用自定义的CalloutView,在Base calloutView文件中添加了以下内容:
 - (void)didMoveToSuperview {
        [super didMoveToSuperview];
        [self.superview bringSubviewToFront:self];
    }

0

我正在使用相同的代码库,遇到了同样的问题。[self.superview bringSubviewToFront: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];

0

https://dev59.com/_GvXa4cB1Zd3GeqPImb1#13716621 - 08442

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接