2010-11-03 87 views
3

我希望註釋標註在引腳完成拖放動畫時彈出。目前,我能夠用下面的方法來模擬它:Mapkit,如何檢測註釋已加載

- (void)showCallOut { 
    [myMapView selectAnnotation:[myMapView.annotations objectAtIndex:0] animated:YES]; 
} 

在我viewDidLoad是其中創建了註釋

[myMapView addAnnotation:annotation]; 

的問題是,你根本無法在此之後標註[self showCallOut];因爲在MapKit「確認」註釋掉落之前它會響應運行時間。我需要創建延遲(希望避免這種情況),或者找到適當的方式來檢測註釋何時到位,然後運行showCallOut方法。

感謝您的幫助!

感謝aBitObvious下面提供了一個解決方案:

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views { 
    [self performSelector:@selector(showCallOut) withObject:nil afterDelay:1]; 
} 

回答

5

嘗試使用didAddAnnotationViews委託方法:

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views 
{ 
    [self showCallOut]; 
} 

確保您的地圖視圖的委託設置。

編輯:
如果您需要添加一個延遲不管,那就試試這個,而不是(例如使用1/2秒的延遲):

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views 
{ 
    [self performSelector:@selector(showCallOut) withObject:nil afterDelay:0.5]; 
} 
+0

這個偉大的工程!任何快速離開你的頭頂來添加延遲?目前,CallOut顯示爲引腳掉線。 – 2010-11-03 01:36:10

+0

我會將其添加到答案中。 – Anna 2010-11-03 01:37:43

+0

太棒了,我設法得到它,但也許你的方法會比我的改進。我只是學習這種語言(項目第3天/使用xcode/objective-c)。我將用我的方法編輯我的問題。 – 2010-11-03 01:41:20