我正在尝试 阻止 MKMapKit
在点击MKMapView
<上显示的标记时显示默认注释标注em> without 阻止注释的委托调用/交互(见下文)。
- (void)mapView:(MKMapView *)mapView didSelectAnnotation:(MKAnnotationView *)view {
// Custom callout initialized & presented here
. . .
}
我知道您可以禁用标注完全显示
someAnnotationView.canShowCallout = NO;
或(更多的是hackish方法)不设置注释的任何显示参数:
// Commenting out string assignments below
// someAnnotation.title = @"Hey!";
// someAnnotation.subTitle = @"Aren't I an annoying callout :P ?";
正如其他主题中所建议的那样,在注释视图中添加子视图确实会将自定义视图(无论您喜欢的话)添加到您选择的边界框架中。
然而,问题是添加子视图
canShowCallout
或不设置标签,注释互动会丢失.. 3注意 您可以将子视图的添加延迟+0.5秒,然后将自定义视图添加到上面标注,但这是一个糟糕的解决方法,因为您看到默认标注在您的视图之前就会显示出来。
是否有任何解决方法
CGPath
或UIBezierePath
绘制的视图)任何帮助将不胜感激。谢谢!
更新
我正在使用委托mapView:viewForAnnotation
为我的地图创建和添加注释视图。
答案 0 :(得分:0)
选择后,同时删除注释的标题和副标题:
func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
if let annotation = view.annotation {
annotation.title = nil
annotation.subtitle = nil
}
}