我正在尝试使用Mapbox iOS SDK中的MGLMapView实现非常基本的功能。我在启用滚动的情况下渲染MGLMapView,以便可以在平移手势上移动视图;我想检测视图是否已移动,因此我将平移手势识别器附加到此视图。
请注意我正在使用界面构建器执行此操作,如下面的屏幕截图所示。
我将手势识别器链接到IBAction,当尝试在地图上移动视图时,它确实会被触发。但是,视图不会移动,即触摸事件不再转发到MGLMapView。当然,我取消选中我的平移手势识别器中的“取消触摸视图”选项。为了确保我还在我的代码中将平移手势识别器链接到IBOublet,所以我可以将其成员cancelsTouchesInView设置为false,但它不会改变任何内容。
我试图以类似的方式添加轻拍手势识别器(2次触摸)并且工作正常,即触发相关的IBAction并将触摸转发到地图视图(地图视图在双击时放大)。
我在这里用平底锅手势识别器错过了什么?
非常感谢你的帮助。
答案 0 :(得分:1)
所以我使用了一种不同的方法来实现我想要的:不是将新的平移手势识别器附加到地图视图,而是将新目标附加到现有的平移手势识别器。
for gestureRecognizer in self.mapView.gestureRecognizers! {
if let _ = gestureRecognizer as? UIPanGestureRecognizer {
gestureRecognizer.addTarget(self, action: #selector(self.panOnMap))
break
}
}
然后调用默认平移和我的方法panOnMap。
我仍然不完全满意这个解决方案,因为它看起来更像是一个黑客。此外,我注意到它们是附在地图视图上的两个平移手势识别器,我不确定应该指向哪一个。