2012-01-11 171 views
3

標題和副標題可以添加到iOS顯示的用戶位置,使用MKUserLocation。當用戶點擊該位置時,這些將顯示在位置上方的氣泡中。其他註釋的思想泡泡可以通過從MKAnnotationView中選擇註釋setSelected:animated:來顯示。不幸的是,MKUserLocation不會從MKAnnotationView下降。如何以編程方式選擇MKUserLocation?

如何以編程方式選擇用戶位置,以便註釋出現在用戶位置而不需要用戶第一次敲擊它?

回答

7

MKAnnotationView的文件說,這個關於其setSelected:animated:方法(和它selected屬性類似的東西):

你不應該直接調用此方法。


相反,使用MKMapView方法selectAnnotation:animated:。如果您在didAddAnnotationViews委託方法中調用它,則可以確保註記視圖已準備好顯示標註,否則調用selectAnnotation將不會執行任何操作。

例如:

-(void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views 
{ 
    for (MKAnnotationView *av in views) 
    { 
     if ([av.annotation isKindOfClass:[MKUserLocation class]]) 
     { 
      [mapView selectAnnotation:av.annotation animated:NO]; 
      //Setting animated to YES for the user location 
      //gives strange results so setting it to NO. 
      return; 
     } 
    } 
} 
+0

謝謝,這工作就像一個魅力。順便說一下,如果使用動畫,關於奇怪結果的評論是專注的。在我的應用程序中,動畫會導致用戶位置重置爲北極(粗略)。沒有動畫,事情按預期工作。 – Mike 2012-01-12 23:07:11

相關問題