两次select一个MapView注释

我的iPhone应用程序有一个地图视图与大量的位置,用户可以从中select。 我希望他能够点击其中一个注释来显示其标注视图,然后再实际select它。 问题是didSelectAnnotationView只被调用一次。

那么如何检测已经select的注释? 或者,我怎样才能取消select一个注释,而不隐藏标注视图? 用户可以通过在再次select之前取消select注释来解决这个问题,但这不是直观的,我想避免他必须这样做。

我刚刚find了以下代码的解决scheme:

-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view { [mapview deselectAnnotation:view.annotation animated:NO]; } 

通过这种方式,选定的注释将被取消select,您可以再次select它。

对于那些在16年有这个问题的人,这里是Swift版本:

 mapView.deselectAnnotation(view.annotation!, animated: false) 

注解不能从选定状态再次移动到选定状态。

您可以改为使用自定义mkannotationview,在其中覆盖setSelected,并在视图上安装UITapGestureRdcognizer,并在取消select视图时将其删除。

将自动识别的线路连接到你想要的任意点击状态。