Как убрать анимацию аннотации на swift

Я использую 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)

И это моя проблема. Когда я закрываю модальный вид, аннотация остается развернутой на карте. Первая фотография была сделана до того, как я нажал на аннотацию, а вторая - после. Я хочу, чтобы "качающаяся" осталась на первом фото: Как убрать анимацию аннотации на swift

Как убрать анимацию аннотации на swift

Можете ли вы пропустить код того, как вы представляете контроллер представления?

Sanzio Angeli 06.04.2021 19:25

Конечно. Я обновил вопрос

danicode 07.04.2021 14:17

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

Sanzio Angeli 07.04.2021 20:01

Я думал, что уже пробовал это, но я просто попробовал сейчас, и это сработало, так что большое вам спасибо :)

danicode 07.04.2021 20:30
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
33
1

Ответы 1

Аннотация теперь выбрана, поэтому она выглядит по-другому.

Чтобы продолжить использование didSelect для отслеживания событий касания в аннотации, немедленно вызовите mapView.deselectAnnotation из didSelect. Это снимет выделение с аннотации и вернет ее к обычному невыделенному размеру.

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

Другие вопросы по теме