问题描述
关于Apple的新API,我有一个关于AppDelegate和Scene Delegate的小问题。因此,根据来自WWDC19 https://developer.apple.com/videos/play/wwdc2019/258/的介绍,AppDelegate现在仅负责应用程序的生命周期,并且在连接或断开场景时也会通知该应用程序。与应用程序状态(背景/前景等)有关的其余功能已移至“场景委托”。
所以我想做的是在我要显示一些内容的地方有一个单独的UIWindow(在外部设备上)。因此,在iOS13和SceneDelegate之前,您可以使用基于通知的方法来完成此操作,例如:https://developer.apple.com/library/archive/documentation/WindowsViews/Conceptual/WindowAndScreenGuide/UsingExternalDisplay/UsingExternalDisplay.html#//apple_ref/doc/uid/TP40012555-CH3-SW1。
从iOS13开始,您可以使用AppDelegate方法进行操作:
func application(_ application: UIApplication,configurationForConnecting connectingScenesession: UIScenesession,options: UIScene.Connectionoptions) -> UISceneConfiguration
因此,当要显示新场景时将调用此方法。据我了解,该流程应如下:从AppDelegate调用didFinishLaunchingWithOption方法,然后从AppDelegate调用返回场景配置的方法,configurationForConnecting :,然后基于使用info.plist返回的配置数据,将调用SceneDelegate中的方法willConnectTo:。
所有这些流程的问题是,当我添加一个外部设备时,调用了函数func application(_ application: UIApplication,options: UIScene.Connectionoptions) -> UISceneConfiguration
,并且返回了场景的特定配置,但是从未调用SceneDelegate:func scene(_ scene: UIScene,willConnectTo session: UIScenesession,options connectionoptions: UIScene.Connectionoptions)
中的方法并且外部设备仅镜像我的屏幕,而不显示我尝试创建的自定义UIWindow。
我还找到了以下解决方案:https://onmyway133.github.io/blog/How-to-use-external-display-in-iOS/可行,但是从我的角度来看,这并不符合Apple在WWDC 19演示中所说的话。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)