如何判断Mkannotations何时被迅速按下4

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何判断Mkannotations何时被迅速按下4相关的知识,希望对你有一定的参考价值。

嘿伙计们我真的卡住了,我在任何地方都找不到答案,所以我们走了。

我有一个mapView需要显示多个mkannotations所以我创建一个数组并存储标题,子标题等来自“帖子”的数组,这些帖子是共享到地图的用户帖子(此代码工作正常)

@IBOutlet weak var mapView: MKMapView!
var annotations = [MKAnnotation]()
var posts = [Post]() // arr of local post objects

  func addPostsToMap(){
    mapView.removeAnnotations(annotations)
    annotations.removeAll()
    for post in posts{
        let location : CLLocationCoordinate2D = CLLocationCoordinate2DMake(post.lat, post.lon)
        let annotation = PostAnnotation(title: post.userName , subtitle: post.postContent, coordinate: location)
        annotations.append(annotation)
    }
    mapView.addAnnotations(annotations)

}

这是自定义postAnnotation:

class PostAnnotation : NSObject , MKAnnotation{

var title: String?
var subtitle: String?
var coordinate: CLLocationCoordinate2D

init(title : String , subtitle : String , coordinate : CLLocationCoordinate2D) {
    self.title = title
    self.subtitle = subtitle
    self.coordinate = coordinate
}



}

问题如何判断哪个注释被按下?我发现我可以用mapkit委托方法deque一个自定义注释,但是没有像表视图那样的“indexPath”,所以我怎么想告诉哪一个被按下了?

答案

PostAnnotation中添加一个额外的字段,该字段是posts数组中帖子的索引。

然后在mapView(MKMapView, didSelect: MKAnnotationView)的实现中,你只需要获取被点击的视图的注释,然后使用索引从数组中获取帖子。

func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
    guard let postAnnotation = view.annotation as? PostAnnotation else {
        return
    }

    let post = posts[postAnnotation.index]
    // do something with post
}

以上是关于如何判断Mkannotations何时被迅速按下4的主要内容,如果未能解决你的问题,请参考以下文章

了解用户在应用内购买期间何时按下了取消按钮

检测iPad的屏幕何时关闭或Unity中的Home按钮被按下事件?

当用户缩小并且注释彼此太靠近时隐藏 MKAnnotations

如何判断文本何时被选中[Android [EditText]]

如何检查按钮上的点击?迅速

如何在 MKMapView 上保存 MKAnnotations?