用户交互阻止新注释视图

时间:2011-09-13 08:12:52

标签: iphone objective-c mkmapview mkannotationview

我使用MKMapView开发了一个小应用程序,其中MKAnnotations在地图上不断添加。只要用户不触摸地图视图,它就能正常工作。

如果用户尝试与地图互动,我注意到地图中没有添加新的MKAnnotationViews。实际上,我发现只要用户不断与地图进行交互,就不会调用mapView: didAddAnnotationViews:。一旦用户的手指离开屏幕,就会调用mapView: didAddAnnotationViews:,将所有应该添加的MKAnnotationViews传递给参数。

我尝试强制调用mapView: didAddAnnotationViews,但我需要传递MKAnnotationViews作为参数(所以我不能使用任何基于定期调用的东西),当我尝试调用它时mapView: viewForAnnotation:的结尾,因为视图尚未添加到mapView,所以它不起作用。尝试通过另一个线程添加注释也是一个坏主意,因为这会导致Collection was mutated while being enumerated异常(可能来自存储注释视图的可变数组)。

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:0)

您可以创建实现委托的自定义类。

您可以使用MKAnnotationView的initWithAnnotation:方法创建注释并将其添加到数组中。

然后,您可以使用addAnnotations:方法将所有内容添加到地图中以添加注释。

只要您使用自定义注释,您需要手动创建它们,因此用户不能。