Отслеживание центра MKMapViewCoordinate

Мне нужно точно отслеживать centerCoordinate MKMapView, пока пользователь масштабирует/сдвигает карту, т.е. между событиями regionWillChangeAnimated: и regionDidChangeAnimated:.

Я проверил следующие подходы, попытався заблокировать MKAnnotation в центре карты. К сожалению, ни один из них не работает достаточно хорошо:

  • Использование UIPanGestureRecognizer (как описано here): это работает довольно хорошо, когда дисплей трогается, но не обновляется, пока карта анимируется после завершения жеста касания. Кроме того, обновления отстают от фактического centerCoordinate.

  • Используя UIScrollViewDelegate I подкласс MKMapView для получения события scrollViewDidScroll:. Это сработало, но событие не срабатывает при каждом шаге прокрутки, что приводит к отрывистым обновлениям.

  • Используя KVO Notifications: следуя этому шаблону, я попытался наблюдать centerCoordinate. Он работает для userLocation, но уведомления, похоже, не отправляются для centerCoordinate.

Есть идеи о том, как эффективно и точно отслеживать centerCoordinate?

KVO казался лучшим выбором. Есть ли хитрость, чтобы заставить его работать с MKMapView centerCoordinate?

10
задан Community 23 May 2017 в 10:26
поделиться