2013-10-24 48 views
1

我試圖添加註解到我的MKMapView,我想設置註釋可以點擊(點擊的功能,我在didAddAnnotationViews沒有。)IOS 7:didAddAnnotationViews不響應addAnnotation

其實這個。功能工作正常的IOS 6,但不工作的IOS 7.我在didAddAnnotationViews添加了一個簡單的NSLog打印語句方法,我發現didAddAnnotationViews沒有響應addAnnotaion正常。我認爲didAddAnnotationViews將被稱爲每次迴應addAnnotaion。當我添加了幾個註釋時,只有一個日誌語句打印,意思是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]; 
    } 
} 
+0

您能提供一個您嘗試過的示例嗎? – itsbruce

+0

您應該在viewForAnnotation委託方法中設置canShowCallout和rightCalloutAccessoryView,而不是在didAddAnnotationViews中。您可以將setRegion留在那裏,但這可能會導致奇怪的行爲,具體取決於註釋的添加方式。無論iOS版本如何,不要對地圖視圖調用委託方法的時間做出嚴格的假設。 – Anna

+0

謝謝安娜卡列尼娜,我解決了我的問題。 – feohoTl

回答

0

方法簽名意味着多個註解視圖都在同一時間給出:

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

嘗試登錄的意見陣列:

NSLog(@"%@", views); 

如果你是幸運的,你會看到你所有的註釋。遍歷它們而不是僅查看索引0處的第一個對象。