gpt4 book ai didi

ios - iMessage 扩展 : Root Navigation Controller results in all delegate methods to not get called in my MSMessagesAppViewController

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:23:10 25 4
gpt4 key购买 nike

我有一个新的 iMessage 扩展项目,我在其中尝试了 2 种构建导航堆栈的方法:

  1. 在我的 Storyboard 中,我将入口点设置为 UINavigationController,它以我的 MSMessagesAppViewController 作为根 Controller 。

  2. 或者我将 MSMessagesAppViewController 直接设置为 Storyboard中的入口点。 (没有拥有它的 UINavigationController)。

对于上面的场景 #1,导航 Controller 工作正常,我可以将新屏幕推送到堆栈中。 (除了整个导航栏被隐藏在扩展 View 中,这是一个我仍然需要弄清楚的单独问题)。但是,使用此配置调用我的 MSMessagesAppViewController 的委托(delegate)方法中没有任何一个。如:willTransitionToPresentationStyledidTransitionToPresentationStyle,willBecomeActiveWithConversation,没有选择消息(这些都没有被调用)

对于上面的场景 #2,确实会调用 MSMessagesAppViewController 方法。 (因为 UINavigationController 不是 Storyboard 中的入口点)。

所以我的问题是:如何让 UINavigationController 位于我的 iMessage 扩展应用程序的根目录,以便我可以执行推送导航,但同时调用 MSMessagesAppViewController 的方法,如 Apple API 所述?

最佳答案

虽然它似乎没有记录,但看起来消息扩展期望入口点是 MSMessagesAppViewController 的子类。这些方法不是委托(delegate)方法,它们是父类(super class)覆盖,因此无法安排它们去其他任何地方。消息扩展系统可以处理您描述的情况,但显然不能。

我会尝试的是:

  • 使入口点成为 MSMessagesAppViewController 的子类。
  • 在该对象生命周期的早期(可能在 viewDidLoad 中)创建一个 UINavigationController 并将其添加为 MSMessagesAppViewController 子类的 subview Controller .让它填满整个屏幕。

现在——实际上——你的导航 Controller 是扩展的根。它并不是真正的根,因为像 willTransitionToPresentationStyle 这样的消息事件仍然会通过 MSMessagesAppViewController 子类。但其他一切都从那里开始。它是 UI 和导航的根。

与此同时,最好向 Apple 提交增强请求。有理由认为消息扩展系统会检查导航 Controller 的根 VC 以查看它是否是正确的类,也许他们将来会添加它。

关于ios - iMessage 扩展 : Root Navigation Controller results in all delegate methods to not get called in my MSMessagesAppViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44933647/

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