首页 文章

iOS禁用通过MKAnnotation触摸

提问于
浏览
2

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

我想要完成的是禁用点击这个“标注”注释 . 它上面有几个按钮,在按下时反应很好,但如果你略微错过,你将关闭这个注释(按下注释并在 Map 上取消选择注释)或选择其后的另一个注释 .

如何保持对此特定注释的所有接触以保持此注释?我想如果你触摸这个注释的任何地方,只有那个注释会接触到 . 如果您触摸其他任何位置, Map 将正常反应(关闭选定的注释,选择另一个注释,无论如何) .

Edit 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];

可悲的是,这仍然触及

Edit 2: 我设法稍微解决了这个问题,但还有一个主要问题 . 我没有使用UIView作为我的主视图类型,而是使用UIButton,这使我能够根据自己的喜好添加子视图 . 然后我将目标设置为整个按钮的虚拟选择器(因此触摸背景会触发虚拟选择器) . 这非常适合捕捉触摸,但有一个例外 .

我还没弄清楚究竟是什么部分被触摸了,但只有当我触摸的按钮后面还有另一个注释时,触摸仍然会通过按钮 . 这种情况不会每次都发生,但有时候只会发生 .

任何人都知道为什么会发生这种情况?

1 回答

  • 0

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

相关问题