iOS MapKit:点击 callout 会触及在 callout 下呈现的 annotationView

iOS MapKit: tap in callout touches annotationView that is rendered under the callout

我是我的 MKMapView,我有一个 MKAnnotationView 的标注大部分时间都运行良好,看起来像这样:

标注中的图标是按钮。

问题:

在这种情况下,被标注隐藏,地图上有一个注释,就在按钮后面。 当我点击这个按钮时,按钮后面的 AnnotationView 获得触摸事件。 当我点击一个没有注释的按钮时,该按钮获得触摸事件。

我使用 How to debug who is eating my touches in UIKit?

的已接受答案发现了这一点

我如何确保触摸标注中的按钮不会被标注后面呈现的 MKAnnotationView 吃掉?

代码太多,目前我不知道要向您展示哪些相关代码。

找到解决方案(我没有找到使用hitTest的解决方案):

我现在使用自己的 UIView 作为标注(请参阅问题下方的 Robs 评论作为开始)。这不会改变我在问题中描述的问题。

我注意到当我点击标注视图中的按钮时没有描述的问题。

所以我在所有非交互式标签和文本视图上放置了一个不可见的自定义按钮。下面显示的 infoButton 除了捕捉点击之外什么都不做。它与下面的 infoStackView 大小相同:

如果使用 annotationView.detailCalloutAccessoryView,此解决方案也应该有效,就像我提出问题时所做的那样。