gpt4 book ai didi

ios - 通过 GMSMapView 拦截 UIView 上的触摸

转载 作者:可可西里 更新时间:2023-11-01 05:36:09 26 4
gpt4 key购买 nike

我正在尝试将 UIView 覆盖在 google GMSMapView 上。目标是拦截滑动,以便了解何时手动移动 map 。 (我知道我可以检查 -mapView:willMove: 但无论 map 是以编程方式移动还是手动触摸,都会调用它)。我正在以编程方式在位置更新时重新居中 map ——因为谷歌不像苹果那样为你做这件事。就像那里的每个 map 程序一样,我想在用户手动移动 map 后立即停止以当前位置为中心。我能想到的捕获这种情况的唯一方法(无需切换到 mapkit 或等待 Google 添加到 API)是在它经过 map 上的 View 时捕获滑动。

澄清一下,我的问题是如何在谷歌地图上放置一个 View ,使其响应滑动并仍然允许该事件传递到 GMSMapView?

我的 map 和 interceptView 都是主视图的同级 subview 。 interceptView 有一个 gestureRecognizer,设置为不透明,不隐藏并且 userInteractionEnabled = YES。因此 interceptView 可以很好地接收触摸事件。但是下面的 map 不会移动。如果我设置 interceptView.userInteractionEnabled = NO, map 工作正常。

通过覆盖 touchesBegan 和调用 GMSMapView 的 touchesBegan 来“传递触摸”不会执行任何操作。覆盖 hitTest 似乎不是一个选项,因为我不能子类化 GMSMapView。有没有人这样做过?我知道这里有很多关于传递特定事件的内容。我想在两个 View 上处理一个特定事件,其中一个是 Google 的 map 层,我无法修改其代码。

最佳答案

mapView:willMove: 接收一个 bool “手势”,如果移动是由用户手势触发的,则为真,否则为假。因此,仅当“手势”为真时,您才能停止重新居中 map 。这样您就可以确定 map 是手动移动的。

关于ios - 通过 GMSMapView 拦截 UIView 上的触摸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18093602/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com