2011-09-13 28 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

谢谢,但这并没有真正回答我的问题。我不能将所有注释存储在数组中,因为它们来自流。 –