首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >macOS Catalyst configurationForConnecting UISceneSession委托函数并不总是在应用程序启动时调用

macOS Catalyst configurationForConnecting UISceneSession委托函数并不总是在应用程序启动时调用
EN

Stack Overflow用户
提问于 2020-03-30 05:05:42
回答 2查看 246关注 0票数 0

我正在构建一个支持多窗口的macOS Catalyst应用程序,它是使用iOS 13中引入的新的UISceneDelegate app集实现的。

根据Apple's documentation的说法,在创建新窗口时,场景代理需要连接到UISceneSession,这允许通过其userInfo属性将信息传递给此会话。在连接场景代理之前设置userInfo的一种方法是在UISceneDelegate的以下函数中

代码语言:javascript
复制
  func application(
    _ application: UIApplication,
    configurationForConnecting connectingSceneSession: UISceneSession,
    options: UIScene.ConnectionOptions
  ) -> UISceneConfiguration {
    // Called when a new scene session is being created.
    // Use this method to select a configuration to create the new scene with.
    connectingSceneSession.userInfo?["foo"] = "bar"

    return UISceneConfiguration(
      name: "Default Configuration", 
      sessionRole: connectingSceneSession.role
    )
  }

查看此函数的the Developer Reference page,似乎应该总是在应用程序启动时在主应用程序的场景设置之前调用它。不幸的是,对于macOS Catalyst,这似乎不是真的,但我找不到任何文档或逻辑来解释为什么这个函数不总是被调用。在我的应用程序中,它重用了UISceneDelegate的简单示例代码,这个函数在应用程序启动时随机调用的时间约为50%。这并不好,因为这意味着随机地有50%的时间应用程序的窗口没有正确设置,因为所需的信息没有传递到UISceneSessionuserInfo属性中。

调用application(_:configurationForConnecting:options:)的确切逻辑是什么,或者如何在使用macOS催化剂的第一个应用场景中强制在应用启动时确定地调用它?

EN

回答 2

Stack Overflow用户

发布于 2020-10-21 13:27:12

这并不是Catalyst所特有的--它也发生在iOS中。它与窗口恢复和创建有关。要理解这一点,请看我对这个更一般的问题的回答:Why is UIApplicationDelegate method application(\_:configurationForConnecting:options:) not called reliably

票数 1
EN

Stack Overflow用户

发布于 2020-08-05 22:37:39

即使在iOS中也不能调用它,不仅仅是在Mac Catalyst中

一旦您使用特定的persistentIdentifier配置了UISceneSession,UIKit将不会再次为使用此persistentIdentifier的会话调用application(_:configurationForConnecting:options:)

UIKit在创建 scene

前不久调用此方法

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

https://stackoverflow.com/questions/60920713

复制
相关文章

相似问题

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