2

我正在尝试获取在MapKit中显示用户位置(蓝点)的 MKAnnotationView 以添加自定义手势识别器。这可能吗?

我已经尝试通过委托方法,但是当我没有标识符字符串时,我不知道如何使视图出队。如果我有标识符,我可能会执行以下代码之类的操作;

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {

    if annotation is MKUserLocation {
        let userLocationAnnotationView = mapView.dequeueReusableAnnotationView(withIdentifier: "??", for: annotation)
        userLocationAnnotationView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.handleStuff)))
        return userLocationAnnotationView
    }
}

编辑

啊,被困了几个小时,我发布后直接找到了解决方案。我发现了两种使用委托方法解决它的不同方法。第一种方法可以通过didSelect

func mapView(_ mapView: MKMapView,
             didSelect view: MKAnnotationView){
    if view.annotation is MKUserLocation {
        // User clicked on the blue dot
    }
}

或者,如果需要手势识别器,可以按如下方式完成。可能应该添加一个检查是否已经添加了手势识别器,因为每次添加注释视图时都会调用此函数。

func mapView(_ mapView: MKMapView,
                      didAdd views: [MKAnnotationView]){
    for view in views {
        if view.annotation is MKUserLocation {
            view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.handleStuff)))
        }
    }
}
4

0 回答 0