Swift 3将长按手势添加到Mapbox注释

时间:2017-03-16 23:55:41

标签: ios swift annotations uigesturerecognizer mapbox

我正在试图找出如何将长按手势添加到地图注释(Mapbox)。我设置了我的代码,以便当用户点击注释时,通过将我的代码放入此注释,它们将转到另一个视图功能

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

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

提前感谢您的回答

1 个答案:

答案 0 :(得分:0)

我不熟悉Mapbox API,但如果没有合适的委托方法,请尝试使用uigesturerecognizer和委托进行自定义实施。

在注释视图上设置手势识别器:

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

成为代表

weak var delegate: AnnotationViewDelegate?

和Annotation子类中的协议AnnotationViewDelegate

protocol AnnotationViewDelegate: class {
    func annotationDidDetectLongPress()
}

实施长按处理程序并通知代表内部长按

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

在控制器中将委托分配给self并实现

func annotationDidDetectLongPress() {
    // done
}