iOS禁用通过MKAnnotation进行触摸



我有一个自定义MKAnnotation和相应的MKAnnotationView。当你按下其中一个注释时,我会打开一个自定义标注气泡,它实际上只是另一个MKAnnotation&MKAnnotationView显示高度自定义的"标注"(即使它实际上是另一个标注)。第二个详细的注释占用了很多空间,这很好。

我试图完成的是禁止点击这个"标注"注释。它上面有几个按钮,按下时反应很好,但如果你稍有失误,你要么关闭这个注释(按下注释并点击取消选择注释的地图),要么选择后面的另一个注释。

我如何保持对该特定注释的所有接触以保持该注释?我想如果你触摸这个注释上的任何地方,只有那个注释会被触摸。如果您触摸其他任何地方,地图将正常反应(关闭选定的注释,选择另一个注释,等等)。

编辑1:我试图添加一个alpha为0.1的背景视图,但它仍然可以穿透。我在MKAnnotationView:中的代码

UIView *backgroundView = [[UIView alloc] initWithFrame:self.frame];
[backgroundView setBackgroundColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:0.1]];
[backgroundView setUserInteractionEnabled:YES];
[self addSubview:backgroundView];

遗憾的是,这仍然影响

编辑2:我设法稍微解决了这个问题,但还有一个主要问题。我没有使用UIView作为我的主视图类型,而是使用UIButton,它使我能够随心所欲地添加子视图。然后,我为整个按钮设置了一个虚拟选择器的目标(因此触摸背景会触发虚拟选择器)。这在捕捉触摸方面非常有效,只有一个例外。

我还没有弄清楚被触摸的确切部分,但有时只有在我触摸的按钮后面有另一个注释的情况下,触摸仍然会通过按钮。但这种情况并非每次都发生,只是偶尔发生。

有人知道为什么会发生这种事吗?

您可以在自定义标注视图的背景添加透明视图,以限制对地图视图的触摸。

最新更新