iOS - выбор / отмена выбора маркера на картах Apple не работает - PullRequest
1 голос
/ 25 апреля 2019

Я выбираю несколько маркеров на картах.Выбор маркера работает отлично, и вызывается метод делегата карты
func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView){}.

  • Когда показывается выноска, и я собираюсь отменить выбор того же маркера, показание выноски.Ничего не произошло.
  • Когда отображается выноска, и я щелкаю по любому другому месту, а затем отменяю выбор предыдущего маркера, он отменяет выбор маркера.

Обязательно:

Когда отображается выноска, и я собираюсь отменить выбор того же маркера, выноска которого показывает, что необходимо отменить выбор.

Используемый стек

  • xCode с swift 4.2
  • Apple MapKit
  • MKAnnotationView как пользовательский маркер

class ArtworkView: MKAnnotationView {
var locItem:LocationItem = LocationItem()


override var annotation: MKAnnotation? {
  willSet {
    guard let artwork = newValue as? Artwork else {return}
    locItem = artwork.locItem
    if(!artwork.isUser){
        canShowCallout = true
        calloutOffset = CGPoint(x: -5, y: 5)
        rightCalloutAccessoryView = nil
        if let imageName = artwork.imageName {
            image = UIImage(named: imageName)
        } else {
            image = nil
        }

        detailCalloutAccessoryView = detailLabel
    }else{
        canShowCallout = false
        calloutOffset = CGPoint(x: -5, y: 5)
        rightCalloutAccessoryView = nil
        image = UIImage(named: "gifcurrentloc")
        detailCalloutAccessoryView = nil
    }

  }
}

Ответы [ 2 ]

0 голосов
/ 02 мая 2019

Вы должны попытаться сделать это, используя метод deselectAnnotation, используя mapView outlet, например:

mapView?.deselectAnnotation(annotation: yourAnnotation, animated: false)
0 голосов
/ 28 апреля 2019

В showCallout()/hideCallout(), используйте selectAnnotation:/deselectAnnotation: через карту.

В showCalloutView: / hideCalloutView:, не звоните setSelected: на MKAnnotationView.

Вы не должны вызывать этот метод напрямую.Объект MKMapView вызывает этот метод в ответ на взаимодействие пользователя с аннотацией.

...