1

我正在尝试将注释添加到我的MKMapView中,并且我想将注释设置为可点击。(我在didAddAnnotationViews中所做的可点击功能。)

实际上,此功能在 IOS 6 上运行良好,但不适用于 IOS 7。我在didAddAnnotationViews方法中添加了一个简单的 NSLog 打印语句,我发现didAddAnnotationViews 无法正确响应addAnnotation。我认为didAddAnnotationViews 每次 都会被调用以响应addAnotaion。当我添加几个注释时,只打印一个日志语句,这意味着didAddAnnotationViews只执行一次我认为。

我正在使用MapKit、MKMapView,而且这个问题只发生在 IOS 7 中。谁能告诉我如何修复或找到 didAddAnnotationViews 无法正常工作的原因?

- (void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views
{    
    MKAnnotationView *annotationView = [views objectAtIndex:0];
    MapViewAnnotation *annotation=annotationView.annotation;
    NSLog(@"<==========didAddAnnotationViews=============> %@",annotation.title);

    annotationView.canShowCallout=YES;
    if(annotation.subtitle==nil){
        annotationView.rightCalloutAccessoryView = nil;
    }else{
        annotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
        MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(annotation.coordinate, 11000, 11000);
        [mv setRegion:region animated:YES];
   }
}
4

1 回答 1

0

方法签名暗示同时给出多个注解视图:

- (void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views;

尝试使用以下命令记录视图数组:

NSLog(@"%@", views);

如果幸运的话,您会看到所有注释。迭代它们,而不是只查看索引 0 处的第一个对象。

于 2014-01-17T00:18:51.873 回答