2011-09-13 29 views
3

我開發了一個使用MKMapView的小應用程序,其中MKAnnotations在地圖上連續添加。只要用戶不觸摸地圖視圖,它就可以很好地工作。阻止新註釋視圖的用戶交互

如果用戶試圖與地圖交互,我注意到沒有新的MKAnnotationViews被添加到地圖。事實上,我發現只要用戶不斷與地圖交互,就不會調用mapView: didAddAnnotationViews:。一旦用戶的手指離開屏幕,mapView: didAddAnnotationViews:被調用,傳入所有應該添加的MKAnnotationViews參數。

我試圖迫使呼叫mapView: didAddAnnotationViews,但我需要(基於定期調用,所以我不能用任何東西)傳遞MKAnnotationViews作爲參數,當我嘗試在mapView: viewForAnnotation:年底稱呼它,它不由於視圖還沒有添加到mapView中,所以它不起作用。嘗試通過另一個線程添加註釋也是一個壞主意,因爲這會導致Collection was mutated while being enumerated異常(可能來自存儲註釋視圖的可變數組)。

有什麼辦法解決這個問題嗎?

回答

0

您可以創建一個實現委託的自定義類。

比你可以使用MKAnnotationView的initWithAnnotation:方法來創建你的註釋並將它們添加到數組中。

然後,您可以使用addAnnotations:方法添加註釋,將它們全部添加到地圖中。

只要您使用自定義註釋,您需要手動創建它們,所以用戶不能。

+0

謝謝,但這並沒有真正回答我的問題。我不能將所有註釋存儲在數組中,因爲它們來自流。 –