2011-10-25 44 views
5

我的應用程序在地圖上放置了一個圖釘,然後選擇使用它的動畫,這樣用戶就有一個視覺線索,並且可以立即讀取標題/副標題。以下代碼適用於iOS4和iOS5,但在iOS5中,除非在selectAnnotation方法中將動畫更改爲NO,否則不會自動選擇註釋。在iOS5中沒有選擇MKAnnotation

任何想法爲什麼?

MapAnnotations *pushpin = [[MapAnnotations alloc] initWithCoordinate:coordinate]; 
pushpin.title = [selectedStation valueForKey:@"name"]; 
pushpin.subtitle = [selectedStation valueForKey:@"address"]; 
[stationMap addAnnotation:pushpin]; 
[stationMap selectAnnotation:pushpin animated:YES]; 

[pushpin release]; pushpin = nil; 

回答

5

不知道爲什麼,但動畫大概需要要創建的標註視圖,並準備是添加註釋後立即之前不太可能會工作。

你可以做的是移動選擇到didAddAnnotationViews委託方法應該在所有的iOS版本的工作:

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views 
{ 
    for (MKAnnotationView *av in views) { 
     if ([av.annotation isKindOfClass:[MapAnnotations class]]) { 
      MapAnnotations *pushpin = (MapAnnotations *)av.annotation; 
      if (_this_pushpin_is_the_one_to_select) { 
       [mapView selectAnnotation:av.annotation animated:YES]; 
       break; //or return; 
      } 
     } 
    } 
} 
+0

感謝。他們必須在iOS5中對註釋中的動畫進行了改變。這工作。對於這樣一個簡單的東西,代碼太多了,但是完成這項工作。 – afterxleep

+2

爲了避免搜索,當添加它時,可以將選定的註釋保留爲ivar,以便只需在委託中調用selectAnnotation。 – Anna