Я использую MapKit, и у меня есть несколько аннотаций на карте. Это markerAnnotationViews. Дело в том, что я хочу, чтобы, когда пользователь касается аннотации, представлялся контроллер представления (без прохождения вспомогательного представления выноски).
На данный момент я сделал это с didSelectView with: MKAnnotationView. Но моя проблема в том, что когда я нажимаю аннотацию, она расширяется и показывает следующий контроллер представления.
Есть ли способ, чтобы аннотация не расширялась, когда пользователь нажимает на нее?
Спасибо.
Редактировать: Вот как я представляю контроллер модального представления, когда нажимаю на аннотацию:
func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
if let annotation = view.annotation as? FirstAnnotation {
let rootVC = DetailPinVC()
rootVC.title = "Detail Pin"
rootVC.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .close, target: self, action: #selector(dismissDetailVC))
let navVC = UINavigationController(rootViewController: rootVC)
present(navVC, animated: true)
} else if let annotation = view.annotation as? SecondAnnotation {
let rootVC = DetailPinVC()
rootVC.title = "Detail Pin"
rootVC.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .close, target: self, action: #selector(dismissDetailVC))
let navVC = UINavigationController(rootViewController: rootVC)
И это моя проблема. Когда я закрываю модальный вид, аннотация остается развернутой на карте. Первая фотография была сделана до того, как я нажал на аннотацию, а вторая - после. Я хочу, чтобы "качающаяся" осталась на первом фото:

Конечно. Я обновил вопрос
Попробуйте вызвать mapView.deselectAnnotation(<#T##annotation: MKAnnotation?##MKAnnotation?#>, animated: <#T##Bool#>) в своем методе didSelect. Вне оператора if / else, поэтому он всегда вызывается.
Я думал, что уже пробовал это, но я просто попробовал сейчас, и это сработало, так что большое вам спасибо :)





Аннотация теперь выбрана, поэтому она выглядит по-другому.
Чтобы продолжить использование didSelect для отслеживания событий касания в аннотации, немедленно вызовите mapView.deselectAnnotation из didSelect. Это снимет выделение с аннотации и вернет ее к обычному невыделенному размеру.
В качестве альтернативы вы можете добавить UITapGestureRecognizer к пользовательскому annotationViews. Это освободит ваш метод didSelect, чтобы вы могли легко использовать его в полной мере, если этого требует набор функций вашего приложения.
Можете ли вы пропустить код того, как вы представляете контроллер представления?