[英]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.