平移手势不会将触摸转发到 Mapbox MGLMapView
Posted
技术标签:
【中文标题】平移手势不会将触摸转发到 Mapbox MGLMapView【英文标题】:Pan gesture won't forward touch to Mapbox MGLMapView 【发布时间】:2016-07-19 06:28:30 【问题描述】:我正在尝试使用 Mapbox ios SDK 中的 MGLMapView 来实现一些非常基本的功能。我渲染了一个启用滚动的 MGLMapView,以便可以在平移手势上移动视图;我想检测视图是否已移动,因此我将平移手势识别器附加到此视图。
请注意,我正在使用界面生成器来执行此操作,如下面的屏幕截图所示。
我将手势识别器链接到一个 IBAction,它确实会在任何人尝试在地图上移动视图时触发。但是,视图没有移动,即触摸事件不再转发到 MGLMapView。当然,我取消选中了平移手势识别器的“取消触摸视图”选项。只是为了确保我还在我的代码中将平移手势识别器链接到 IBOublet,以便我可以将其成员 cancelsTouchesInView 设置为 false,但它不会改变任何内容。
我尝试以类似的方式添加一个点击手势识别器(2 次触摸),它工作正常,即触发关联的 IBAction 并将触摸转发到地图视图(地图视图在双击时放大)。
我在使用平移手势识别器时错过了什么?
非常感谢您的帮助。
【问题讨论】:
【参考方案1】:所以我使用了不同的方法来实现我想要的:我没有将新的平移手势识别器附加到地图视图,而是将新目标附加到现有的平移手势识别器。
for gestureRecognizer in self.mapView.gestureRecognizers!
if let _ = gestureRecognizer as? UIPanGestureRecognizer
gestureRecognizer.addTarget(self, action: #selector(self.panOnMap))
break
然后调用默认平移和我的方法 panOnMap。
我仍然对这个解决方案不完全满意,因为它看起来更像是一个 hack。此外,我注意到它们是附加到地图视图的两个平移手势识别器,我不确定应该定位哪一个。
【讨论】:
以上是关于平移手势不会将触摸转发到 Mapbox MGLMapView的主要内容,如果未能解决你的问题,请参考以下文章