【发布时间】:2018-12-22 19:29:51
【问题描述】:
我是我的MKMapView,我有一个MKAnnotationView 的标注,大部分时间都可以正常工作,看起来像这样:
标注中的图标是按钮。
问题:
在这种情况下,被标注隐藏,地图上有一个注释,正好在一个按钮的后面。 当我点击这个按钮时,按钮后面的 AnnotationView 会获得触摸事件。 当我点击一个后面没有注释的按钮时,该按钮会获得触摸事件。
我使用How to debug who is eating my touches in UIKit? 接受的答案发现了这一点
如何确保在标注中的按钮触摸不会被标注后面呈现的MKAnnotationView 吃掉?
代码非常多,目前我不知道要向您展示哪些代码。
【问题讨论】:
-
您是否在标注视图中实现了
hitTest(_:with:)? -
不,我实现 hitTest 的唯一地方是要调试的 UIWindow 子类:stackoverflow.com/questions/26109023/…
-
如果你更新它以包含代码,我建议创建a much simpler, reproducible example。我们真的不想看到生成上述代码的代码(因为这将包含大量不相关的 kruft)。我们只需要最基本的东西(您如何创建/显示您的自定义标注等)。
-
我会实现的
-
当我将按钮放在自定义标注中时,我总是实现
hitTest。请参阅CustomMKAnnotationcallout bubble with button 中第 3 点下的第三个项目符号。对于 Swift 示例,请参阅github.com/robertmryan/CustomMapViewAnnotationCalloutSwift。
标签: ios swift mapkit mouseevent mapkitannotation