MKAnnotation未在iOS5中被选中

aft*_*eep 5 animation mkannotation ios ios5

我的应用程序在地图上放置一个图钉,然后选择其使用动画,以便用户有一个视觉线索,可以立即读取标题/副标题.以下代码适用于iOS4和iOS5,但在iOS5中,除非我在selectAnnotation方法中将动画更改为NO,否则不会自动选择注释.

有什么想法吗?

MapAnnotations *pushpin = [[MapAnnotations alloc] initWithCoordinate:coordinate];
pushpin.title = [selectedStation valueForKey:@"name"];
pushpin.subtitle = [selectedStation valueForKey:@"address"];
[stationMap addAnnotation:pushpin];
[stationMap selectAnnotation:pushpin animated:YES];

[pushpin release]; pushpin = nil;
Run Code Online (Sandbox Code Playgroud)

小智 5

不确定为什么它之前会工作但动画可能需要创建并准备好注释视图,这在添加注释后不太可能立即生效.

你可以做的是将选择移动到didAddAnnotationViews委托方法,该方法适用于所有iOS版本:

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views
{
    for (MKAnnotationView *av in views) {
        if ([av.annotation isKindOfClass:[MapAnnotations class]]) {
            MapAnnotations *pushpin = (MapAnnotations *)av.annotation;
            if (_this_pushpin_is_the_one_to_select) {
                [mapView selectAnnotation:av.annotation animated:YES];
                break;  //or return;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 为了避免搜索,您可以在添加时将参考注释保留为ivar,这样您只需要在委托中调用selectAnnotation. (2认同)