首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS -选择/取消选择苹果地图中的标记不起作用

iOS -选择/取消选择苹果地图中的标记不起作用
EN

Stack Overflow用户
提问于 2019-04-25 13:36:06
回答 2查看 1.2K关注 0票数 1

我在地图上选择多个标记。标记选择工作良好,映射委托方法。

func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView){}正在被呼叫。

  • 当标注显示时,我将取消选择其标注所显示的标记。什么都没发生。
  • 当标注显示,我点击任何其他地方,然后取消选择前一个标记,它将取消选择标记。

必需:

当标注显示,我将取消选择相同的标记,其标注显示需要取消选择。

使用堆栈

  • xCodeswift 4.2
  • Apple MapKit
  • MKAnnotationView作为自定义标记
代码语言:javascript
复制
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
    }

  }
}
EN

回答 2

Stack Overflow用户

发布于 2019-04-28 11:41:45

showCallout()/hideCallout()中,通过地图使用selectAnnotation:/deselectAnnotation:

showCalloutView:/hideCalloutView:中,不要在MKAnnotationView上调用setSelected:

不应直接调用此方法。MKMapView对象响应与注释的用户交互调用此方法。

票数 0
EN

Stack Overflow用户

发布于 2019-05-02 10:55:49

您应该尝试使用方法deselectAnnotation使用您的mapView outlet来实现它,例如:

代码语言:javascript
复制
mapView?.deselectAnnotation(annotation: yourAnnotation, animated: false)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55850586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档