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
}
好像长按是越来越添加到整个的MapView而不仅仅是annotationsView。而且我得到和协议的错误。说协议不能嵌套在另一个声明 – Markinson
@Markinson你能给你的回购链接,以便我可以检查?这很难猜测,如果我没有看到代码... –
对不起,我没有我的代码在github上:/ – Markinson