我试图在谷歌 GMSMapView 上覆盖 UIView。目标是拦截滑动,以便了解何时手动移动地图。(我知道我可以检查 -mapView:willMove: 但无论地图是以编程方式移动还是手动触摸的结果都会被调用)。随着位置的更新,我以编程方式重新居中地图——因为谷歌不像苹果那样为你做这件事。就像那里的每个地图程序一样,一旦用户手动移动地图,我想停止以当前位置为中心。我能想到的捕捉这种情况的唯一方法(没有切换到 mapkit 或等待 Google 添加到 API)是捕捉经过地图上视图的滑动。
为了澄清,我的问题是如何在谷歌地图上放置视图,使其响应滑动并仍然允许该事件传递到 GMSMapView?
我的 map 和 interceptView 都是主视图的兄弟姐妹。interceptView 有一个gestureRecognizer,设置为不透明,不隐藏并且userInteractionEnabled = YES。因此,interceptView 可以很好地接收触摸事件。但是下面的地图不动。如果我设置interceptView.userInteractionEnabled = NO,地图工作正常。
通过覆盖 touchesBegan 并调用 GMSMapView 的 touchesBegan 来“传递触摸”不会做任何事情。并且覆盖 hitTest 似乎不是一个选项,因为我不能继承 GMSMapView。有人做过吗?我知道这里有很多关于传递特定事件的内容。我想在两个视图上处理一个特定事件,其中一个是我无法修改代码的谷歌地图层。