我知道 SE 上有几篇与此问题相关的帖子,但我无法绕过它们找到适合我的情况的适当解决方案。
我在 View Controller 中有一个 map View 。我在 map View VC 的顶部呈现另一个 View Controller ,其中 modalPresentationStyle
设置为 custom
(容纳卡片 View ):
对于此场景,我希望 map View 在显示位置卡 View 时仍然能够识别触摸,并且位置卡仍能识别其内部的触摸。就像呈现以下 ListView 时 Apple Maps 的功能一样。
我知道我不能通过 View Controller 传递触摸,但我无法在两者之间做出决定:
- 将位置卡放入我非常不喜欢的 map View 中,
- 通过
addChildViewController
呈现位置卡,我不太确定如何实现才能达到我想要的效果。
This SE question给出了详细的答案和一个模仿 Apple Maps 界面的小示例项目,尽管我仍然不知道如何解决我的问题。
最佳答案
我选择了将位置卡 View 转储到 map View 中的选项。 但是我不喜欢它。
问题是我不想在 map View 中使用位置卡的任何逻辑。但与此同时,iOS 没有提供基础设施, View Controller 之间的触摸传输基本上是不可能的,建议的解决方法似乎很难实现。
首先,我将位置卡 View 从 View Controller 迁移到结构。
然后,我定义了一个名为 LocationCardPresentable
的协议(protocol),在扩展时,它要求 Self
的类型为 MapVC
。因此,在协议(protocol)扩展中,我可以像在 MapVC 中一样工作,但实际上不是。协议(protocol)扩展有多种显示和关闭位置卡的方法,我可以从 MapVC
中调用这些方法。
关于ios - 与后面的 View Controller 交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44435227/