我试图通过阻止 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 ?";正如其他线程中所建议的,在注释视图中添加一个子视图确实会将一个自定义视图(任意您喜欢的视图)添加到您选择的边框中。
问题,但是,添加一个子视图
canShowCallout 或不设置标签,则注释交互将丢失。3注意到您可以延迟添加您的子视图+0.5秒,这将在标注之上添加您的自定义视图,但是这是一个糟糕的解决方法,因为您看到默认的标注早在您的视图之前就出现了。
有什么解决办法吗?
CGPath或UIBezierePath绘制视图)任何帮助都将不胜感激。谢谢!
更新:
我使用委托mapView:viewForAnnotation来创建注释视图并将其添加到我的地图中。
发布于 2020-08-17 23:15:52
选中时,移除注释的标题和副标题:
func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
if let annotation = view.annotation {
annotation.title = nil
annotation.subtitle = nil
}
}https://stackoverflow.com/questions/43766219
复制相似问题