У меня есть MKMapView, который имеет аннотации.Моя цель - скрыть аннотацию, если она выбрана, когда карта закончила прокрутку.
Когда вызывается аннотация, я назначаю аннотацию переменной, чтобы отслеживать ее.
func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
lastSelectedAnnotation = view.annotation
}
Я знаю:
func mapView(_ mapView: MKMapView, regionDidChangeAnimated animated: Bool){ }
Однако я не могу выяснить (здесь начинающий), как определить, что карта закончила изменять свой регион, чтобы я мог вызвать свою функцию:
func hideSelectedAnnotation(_ mapView: MKMapView) {
DispatchQueue.main.async {
mapView.deselectAnnotation(self.lastSelectedAnnotation, animated: true)
self.lastSelectedAnnotation = nil
}
}
Я также скрываю аннотацию, когда нажимается дополнительная кнопка:
func mapView(_ mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl){
hideSelectedAnnotation(mapView)}
Я попытался сохранить координаты региона и сравнить их с картой, но карта не обязательно центрирует аннотацию.Я также мог бы запустить таймер, и когда regionDidChangeAnimated больше не вызывается, скрыть аннотацию.Но это похоже на бойню.
Спасибо за любую помощь!