为什么selectAnnotation在这种情况下不起作用?

时间:2012-04-14 21:02:20

标签: ios mapkit

当我的地图视图显示以下代码时,我正在设置MapView注释,除了选择之外,所有这些代码似乎都正常工作:

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    MapAnnotation *pinpoint = [[MapAnnotation alloc] initWithTitle:@"Title" andCoordinate:loc];

    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(loc, 1500, 1500);
    [self.mapView setRegion:region animated:true];
    [self.mapView addAnnotation:pinpoint];
    [self.mapView selectAnnotation:pinpoint animated:true];  //nothing happens!?   
}

但是如果在这个回调中调用相同的方法,它可以正常工作:

- (void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views
{
    MKAnnotationView *annotationView = [views objectAtIndex:0];
    id <MKAnnotation> mp = [annotationView annotation];
    [mv selectAnnotation:mp animated:YES];
}

造成这种情况的原因是什么?这不是调用selectAnnotation的合适位置吗?我是否必须等到调用viewForAnnotation之后?

1 个答案:

答案 0 :(得分:1)

必须先添加注释视图,然后才能选择注释。

请看这个热门问题:

How to trigger MKAnnotationView's callout view without touching the pin?