在iOS5中未选择MKAnnotation

在iOS5中未选择MKAnnotation,ios,animation,ios5,mkannotation,Ios,Animation,Ios5,Mkannotation,我的应用程序在地图上放置一个图钉,然后选择它的使用动画,这样用户就有了视觉线索,可以立即阅读标题/副标题。下面的代码在iOS4和iOS5中都可以使用,但是在iOS5中,除非我在selectAnnotation方法中将动画更改为NO,否则注释不会自动被选中 你知道为什么吗 MapAnnotations *pushpin = [[MapAnnotations alloc] initWithCoordinate:coordinate]; pushpin.title = [selectedStation

我的应用程序在地图上放置一个图钉,然后选择它的使用动画,这样用户就有了视觉线索,可以立即阅读标题/副标题。下面的代码在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;

不确定为什么之前可以工作,但动画可能需要创建注释视图并准备就绪,这在添加注释后不太可能立即进行

您可以做的是将选择移动到
didAddAnnotationViews
delegate方法,该方法应适用于所有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;
            }
        }
    }
}

谢谢他们一定在iOS5中对注释中的动画做了一些更改。这很有效。对于这样一件简单的事情来说,代码有点太多了,但可以完成这项工作。为了避免搜索,您可以在添加选定批注时将其引用保留为ivar,这样您只需要在委托中调用selectAnnotation。