首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自定义MKAnnotationView -如何捕获触点而不忽略callout?

自定义MKAnnotationView -如何捕获触点而不忽略callout?
EN

Stack Overflow用户
提问于 2011-07-25 10:49:50
回答 2查看 3.4K关注 0票数 3

我有一个自定义的MKAnnotationView子类。它完全按照我想要的方式显示视图。在该视图中,我有一个按钮。我想要捕获按钮上的事件以执行操作。这个很好用。

但是,我不希望callout被取消或消失。基本上,触摸标注中的按钮将开始播放声音,但我希望保留注释,以便用户可以按stop (停止),而不必再次触摸地图别针以恢复注释。在另一种情况下,我希望按钮触摸在标注中显示更多细节,所以我绝对不想在这一点上忽略标注。

当用户选择标注或标注中的按钮时,如何防止标注消失?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-29 21:49:48

这可能不是最好的解决方案,但它肯定有效。首先,我尝试了很多东西,比如观察上下文之类的,但我从来没有经历过崩溃,而且看起来很麻烦。所以,这是我所做的:

我首先指定了保持警报可见的控制因素。在我的示例中,我创建了一个自定义注释视图,每当用户单击该自定义视图上的按钮时,我希望它保持可见,甚至可能更改内容。因此,我在自定义视图上设置了一个代理,这样我的map就可以知道什么时候发生了变化。在映射视图控制器中,我捕获了该消息,并将一个类成员变量设置为true,以表明我希望保留注释视图。

注意:此将在选择消息发生之前发生。

现在,在我的didDeselectAnnotation方法中,我检查了布尔值。如果我想让它保持可见,我选择不删除我的注释,重置布尔值,并手动重新选择注释动画,将设置为NO。这让注释视图“保持”可见--可能是作弊,但用户看不到区别。每当布尔值表示取消选择是ok时,我只需删除注释,一切都是正常的。

因此,工作流程如下:

显示方法触摸针

  1. CustomAnnotationView
  2. 用户单击CustomAnnotationView上的按钮,该按钮通知委派(mapView)操作已发生
  3. 设置类布尔值以知道您要保留批注方法,然后在didDeselectAnnotation方法中调用didDeselectAnnotation
  4. ,使用conditional来决定是应该删除批注,还是通过不删除批注并在没有动画的情况下手动重新选择它来保留批注。

<

  1. G217

我希望这对其他人有帮助。我花了一段时间才弄明白这件事,所以我希望它能节省你的时间。

如果你找到更好的解决方案,请把它贴在这里!

票数 6
EN

Stack Overflow用户

发布于 2012-11-21 23:55:09

你可以通过使用hittest来抑制标注关闭,请检查下面的帖子。Detect tap on title of callout

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6811366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档