Swift 3将长按手势添加到地图框注释

问题描述:

我想弄清楚如何将长按手势添加到地图注记(Mapbox)。我设置了我的代码,以便当用户点击注释时,他们会继续通过将我的代码放入此函数来转换为另一种视图。Swift 3将长按手势添加到地图框注释

func mapView(_ mapView: MGLMapView, didSelect annotation: MGLAnnotation) { 
} 

现在我想允许用户通过持有相同的批注继续到另一个视图。我尝试在上面的代码中使用if和else语句,但长按手势不起作用,除非我先点击注释以激活该函数,以便if和else语句可以开始工作。但我不希望用户点击然后按住。我只是希望他们点击或按住注释。

谢谢你的答案提前

我不熟悉的Mapbox API,但如果没有合适的委托方法尝试uigesturerecognizer和委托自己的自定义实现。

设置你的手势识别器上标注的观点:

let longPressGestureRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(longPressDetected)) 
annotation.view.addGestureRecognizer(longPressGestureRecognizer) 

作出委托

weak var delegate: AnnotationViewDelegate? 

,并在注释子类的协议AnnotationViewDelegate

protocol AnnotationViewDelegate: class { 
    func annotationDidDetectLongPress() 
} 

执行长按处理器和通知代表长龙内

func longPressDetected(sender: UILongPressGestureRecognizer) { 
    // here you should notify the delegate 
    delegate?.annotationDidDetectLongPress() 
} 

指派代表到控制器自我和实现

func annotationDidDetectLongPress() { 
    // done 
} 
+0

好像长按是越来越添加到整个的MapView而不仅仅是annotationsView。而且我得到和协议的错误。说协议不能嵌套在另一个声明 – Markinson

+0

@Markinson你能给你的回购链接,以便我可以检查?这很难猜测,如果我没有看到代码... –

+0

对不起,我没有我的代码在github上:/ – Markinson