从视图中删除MKAnnotationView默认标注

我试图阻止 MKMapKit呈现默认的注释标注,当轻击MKMapView上显示的标记, 而不阻止注释的委托调用/交互(见下文)。

 - (void)mapView:(MKMapView *)mapView didSelectAnnotation:(MKAnnotationView *)view { // Custom callout initialized & presented here . . . } 

我知道你可以完全禁止标注

 someAnnotationView.canShowCallout = NO; 

或者(更多的是一种冒险的做法) 设置注释的任何显示参数:

 // Commenting out string assignments below // someAnnotation.title = @"Hey!"; // someAnnotation.subTitle = @"Aren't I an annoying callout :P ?"; 

正如其他线程所build议的那样,在注释视图添加一个子视图确实会为您select的边框添加一个自定义视图(无论您希望如何)。

然而, 问题是添加一个子视图

  1. 不会停止显示默认宣传泡泡
  2. 如果您禁用了canShowCallout 或者不设置标签,则注释交互会丢失。
  3. 如果添加子视图,则会在默认标注下添加。

3注意您可以延迟子视图的添加时间+0.5秒,然后将您的自定义视图添加到标注上方 ,但这是一个糟糕的解决方法,因为您看到默认标注在您的视图之前很好地显示。

有没有任何解决方法

  1. 在不禁用委托方法的情况下删除默认的标注,
  2. 或编辑实​​际的标注视图(我猜这是一些CGPathUIBezierePath绘制的视图)

任何帮助,将不胜感激。 谢谢!

更新:

我正在使用委托mapView:viewForAnnotation来创build和添加批注视图到我的地图。