我有一个自定义的 MKAnnotationView 子类。它完全按照我的意愿显示视图。在那个视图中,我有一个按钮。我想捕获按钮上的事件以执行操作。这工作得很好。
但是,我不希望标注被解雇或消失。基本上,触摸标注中的按钮将开始播放声音,但我想保留注释,以便用户可以按需要按停止,而无需再次触摸地图图钉以恢复注释。在另一种情况下,我希望按钮触摸能够为标注中的更多细节设置动画,因此我绝对不想在此时关闭标注。
每当用户选择标注或标注内的按钮时,如何防止标注消失?
我有一个自定义的 MKAnnotationView 子类。它完全按照我的意愿显示视图。在那个视图中,我有一个按钮。我想捕获按钮上的事件以执行操作。这工作得很好。
但是,我不希望标注被解雇或消失。基本上,触摸标注中的按钮将开始播放声音,但我想保留注释,以便用户可以按需要按停止,而无需再次触摸地图图钉以恢复注释。在另一种情况下,我希望按钮触摸能够为标注中的更多细节设置动画,因此我绝对不想在此时关闭标注。
每当用户选择标注或标注内的按钮时,如何防止标注消失?
这可能不是最好的解决方案,但它绝对有效。首先,我尝试了很多东西,比如观察上下文等,但我从来没有通过崩溃,而且看起来很麻烦。所以,这就是我所做的:
我首先指定了保持警报可见的控制因素。就我而言,我创建了一个自定义注释视图,每当用户单击该自定义视图上的按钮时,我希望它保持可见,甚至可能更改内容。所以,我在那个自定义视图上设置了一个委托,这样我的地图就可以知道什么时候发生了变化。在我的地图视图控制器中,我捕捉到该消息并将类成员变量设置为 true 以表示我希望注释视图保留。
注意:这将在选择消息出现之前发生。
现在,在我的 didDeselectAnnotation 方法中,我检查了布尔值。如果我想让它保持可见,我选择不删除我的注释,我重置布尔值,然后手动重新选择注释,将动画设置为 NO。这让注释视图“保持”可见——可能是作弊,但用户看不到差异。每当该布尔值表明取消选择没问题时,我只需删除注释,一切都很好。
所以,工作流程是这样的:
我希望这对其他人有帮助。我花了一段时间才弄清楚这一点,所以我希望它可以节省您的时间。
如果您找到更好的解决方案,请务必在此处发布!
您可以使用 hittest 抑制标注关闭,请查看以下帖子。 检测对标注标题的点击