繁体   English   中英

iOS禁止通过MKAnnotation触摸

[英]iOS Disable touching through a 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:我设法稍微解决此问题,但还有1个主要问题。 我没有使用UIView作为我的主要视图类型,而是使用了UIButton,它使我能够随意添加子视图。 然后,将目标设置为整个按钮的虚拟选择器(因此触摸背景将触发虚拟选择器)。 除了1个例外,这非常适合捕获触摸。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM