MKMapView注释第二次无法选择

Chi*_*aka 12 mkmapview mkannotation mkannotationview ios

在我的iPad应用程序上,我使用iOS地图使用注释显示几个点.我想在选择注释时显示自定义标注.我正在使用UIPopoverController来显示callout.但是,这仅在第一次点击注释时有效.如果我想在相同的注释上看到标注,我必须先选择不同的注释,然后点击之前的注释.

基本上这个委托方法不是第二次触发.

-(void)mapView:(MKMapView *)mapView 
    didSelectAnnotationView:(MKAnnotationView *)view
Run Code Online (Sandbox Code Playgroud)

我正在使用故事板,并在那里设置委托.这就是我设置注释的方式.

[self.mapView addAnnotations:self.placemarksArray] 
Run Code Online (Sandbox Code Playgroud)

谁能告诉我上述问题的原因?谢谢

小智 29

didSelectAnnotationView委托方法的文档在讨论部分中说明了这一点:

您可以使用此方法跟踪注释视图的选择状态中的更改.

(我在"更改"一词上添加了粗体和斜体.)

这意味着委托方法仅在注释视图的状态从"未选择"更改为"已选择"时触发.


为了避免必须点击另一个注释或地图(将所选注释的状态更改为"未选择")并再次检测相同注释上的"选择",您可以强制取消选择顶部的didSelectAnnotationView方法:

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

    //existing code to handle tap on annotation...
}
Run Code Online (Sandbox Code Playgroud)