Взаимодействие с пользователем, блокирующее новые представления аннотаций - PullRequest
3 голосов
/ 13 сентября 2011

Я разработал небольшое приложение, используя MKMapView, где MKAnnotations постоянно добавляются на карту. Работает хорошо, пока пользователь не касается карты.

Если пользователь пытается взаимодействовать с картой, я заметил, что новые MKAnnotationViews не добавляются на карту. Фактически я обнаружил, что пока пользователь продолжает взаимодействовать с картой, mapView: didAddAnnotationViews: не вызывается. Как только палец пользователя покидает экран, вызывается mapView: didAddAnnotationViews:, передавая в аргументе все MKAnnotationViews, которые должны были быть добавлены.

Я пытался принудительно вызвать mapView: didAddAnnotationViews, но мне нужно передать MKAnnotationViews в качестве аргументов (поэтому я не могу использовать что-либо, основанное на периодических вызовах), и когда я пытаюсь вызвать его в конце mapView: viewForAnnotation:, это не работает, так как вид еще не был добавлен в mapView. Также плохой идеей является попытка добавить аннотацию через другой поток, так как это приведет к исключению Collection was mutated while being enumerated (возможно, из изменяемого массива, хранящего представления аннотации).

Есть ли способ это исправить?

1 Ответ

0 голосов
/ 13 сентября 2011

Вы можете создать собственный класс, который реализует делегат.

Чем вы можете использовать метод MKAnnotationView initWithAnnotation: для создания ваших аннотаций и добавления их в массив.

Затем вы можете добавить их все на карту, используя метод addAnnotations:, чтобы добавить своианнотаций.

Пока вы используете пользовательские аннотации, вам нужно создавать их вручную, поэтому пользователь не может.

...