平移手势不会将触摸转发到Mapbox MGLMapView

时间:2016-07-19 06:28:31

标签: ios swift mapbox uipangesturerecognizer

我正在尝试使用Mapbox iOS SDK中的MGLMapView实现非常基本的功能。我在启用滚动的情况下渲染MGLMapView,以便可以在平移手势上移动视图;我想检测视图是否已移动,因此我将平移手势识别器附加到此视图。

请注意我正在使用界面构建器执行此操作,如下面的屏幕截图所示。

interface builder screenshot

我将手势识别器链接到IBAction,当尝试在地图上移动视图时,它确实会被触发。但是,视图不会移动,即触摸事件不再转发到MGLMapView。当然,我取消选中我的平移手势识别器中的“取消触摸视图”选项。为了确保我还在我的代码中将平移手势识别器链接到IBOublet,所以我可以将其成员cancelsTouchesInView设置为false,但它不会改变任何内容。

我试图以类似的方式添加轻拍手势识别器(2次触摸)并且工作正常,即触发相关的IBAction并将触摸转发到地图视图(地图视图在双击时放大)。

我在这里用平底锅手势识别器错过了什么?

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

所以我使用了一种不同的方法来实现我想要的:不是将新的平移手势识别器附加到地图视图,而是将新目标附加到现有的平移手势识别器。

for gestureRecognizer in self.mapView.gestureRecognizers! {
    if let _ = gestureRecognizer as? UIPanGestureRecognizer {
        gestureRecognizer.addTarget(self, action: #selector(self.panOnMap))
        break
    }
}

然后调用默认平移和我的方法panOnMap。

我仍然不完全满意这个解决方案,因为它看起来更像是一个黑客。此外,我注意到它们是附在地图视图上的两个平移手势识别器,我不确定应该指向哪一个。