IOS 7:didAddAnnotationViews不响应addAnnotation

时间:2013-10-24 18:01:17

标签: ios7 mapkit

我正在尝试在 MKMapView 中添加注释,我想将注释设置为可点击。(我在 didAddAnnotationViews 中执行了可点击功能。)

实际上,此功能适用于IOS 6,但不适用于IOS 7.我在 didAddAnnotationViews 方法中添加了一个简单的NSLog打印语句,我发现 didAddAnnotationViews 没有正确回应 addAnnotaion 。我认为每次响应 addAnnotaion 时都会调用 didAddAnnotationViews 。当我添加几个注释时,只有一个日志语句打印,这意味着 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];
   }
}

1 个答案:

答案 0 :(得分:0)

方法签名意味着同时给出了多个注释视图:

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

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

NSLog(@"%@", views);

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