我使用 MKMapView
开发了一个小型应用程序,其中 MKAnnotations
连续添加在 map 上。只要用户不触摸 map View ,它就可以正常工作。
如果用户尝试与 map 交互,我注意到没有新的 MKAnnotationViews
添加到 map 中。事实上,我发现只要用户不断与 map 交互,就不会调用 mapView: didAddAnnotationViews:
。一旦用户的手指离开屏幕,mapView: didAddAnnotationViews:
就会被调用,并在参数中传递所有应该添加的 MKAnnotationViews
。
我尝试强制调用 mapView: didAddAnnotationViews
,但我需要将 MKAnnotationViews
作为参数传递(因此我无法使用基于定期调用的任何内容),当我尝试在 mapView: viewForAnnotation:
末尾调用它时,它不起作用,因为 View 尚未添加到 mapView 中。尝试通过另一个线程添加注释也是一个坏主意,因为这将导致 Collection was mutated while being enumerated
异常(可能来自存储注释 View 的可变数组)。
有什么办法可以解决这个问题吗?
最佳答案
您可以创建一个实现委托(delegate)的自定义类。
您可以使用 MKAnnotationView 的 initWithAnnotation:
方法来创建注释并将其添加到数组中。
然后您可以使用 addAnnotations:
方法添加注释,将它们全部添加到 map 中。
只要您使用自定义注释,您就需要手动创建它们,所以用户不能。
关于iphone - 用户交互阻止新的注释 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7398710/