我正在试图找出如何将长按手势添加到地图注释(Mapbox)。我设置了我的代码,以便当用户点击注释时,通过将我的代码放入此注释,它们将转到另一个视图功能
func mapView(_ mapView: MGLMapView, didSelect annotation: MGLAnnotation) {
}
现在我希望允许用户通过持有相同的注释来转换到另一个视图。我尝试在上面的代码中使用if和else语句,但是长按手势不起作用,除非我先点击注释来激活函数,所以if和else语句可以开始工作。但我不希望用户点击然后按住。我只是希望他们点击或按住注释。
提前感谢您的回答
答案 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
}