gpt4 book ai didi

iphone - 自定义 MKAnnotationView - 如何捕捉触摸而不关闭标注?

转载 作者:可可西里 更新时间:2023-11-01 17:11:09 24 4
gpt4 key购买 nike

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

但是,我不希望标注被忽略或消失。基本上,触摸标注中的按钮将开始播放声音,但我想保留注释,以便用户可以在需要时按停止,而无需再次触摸 map 图钉以恢复注释。在另一个例子中,我希望按钮触摸能够在标注中激活更多细节,所以我绝对不想在此时关闭标注。

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

最佳答案

这可能不是最好的解决方案,但绝对有效。首先,我尝试了很多事情,比如观察上下文等等,但我从来没有摆脱过崩溃,而且这看起来很麻烦。所以,这就是我所做的:

我首先指定了使警报可见的控制因素。在我的例子中,我创建了一个自定义注释 View ,每当用户单击该自定义 View 上的按钮时,我希望它保持可见,甚至可能更改内容。因此,我在该自定义 View 上设置了一个委托(delegate),以便我的 map 可以知道什么时候发生了变化。在我的 map View Controller 中,我捕获了该消息并将类成员变量设置为 true 以表示我希望保留注释 View 。

注意:这将发生在选择消息出现之前。

现在,在我的 didDeselectAnnotation 方法中,我检查 bool 值。如果我想让它保持可见,我选择不删除我的注释,我重置 bool 值,然后手动重新选择注释,将动画设置为 NO。这让注释 View “保持”可见——也许是作弊,但用户看不出区别。每当该 bool 值表示可以取消选择时,我只需删除注释即可,一切正常。

所以,工作流程是这样的:

  1. 触摸图钉
  2. 显示 CustomAnnotationView
  3. 用户单击 CustomAnnotationView 上的一个按钮,通知委托(delegate) (mapView) Action 发生
  4. 设置类 bool 值以了解您想要保留注释
  5. mapView 然后调用 didDeselectAnnotation 方法
  6. 在 didDeselectAnnotation 方法中,使用条件来决定是否应该删除注释,或者通过不删除注释并在没有动画的情况下手动重新选择它来保留注释。

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

如果您找到更好的解决方案,请务必在此处发布!

关于iphone - 自定义 MKAnnotationView - 如何捕捉触摸而不关闭标注?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6811366/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com