问题标签 [uiscenedelegate]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1786 浏览

swift - 场景委托如何在 iOS 13 之前使用?

所以iOS 13真的给我带来了麻烦!我无法理解如何在我现有的应用程序中使用 SceneDelegate。

目前我正在使用布尔检查AppDelegate来确定首先显示哪个 ViewController。我需要弄清楚如何使用SceneDelegate.

我主要关心的是如何确保我的应用程序可以在 iOS 13 和之前的任何 iOS 版本上运行?如果我添加 SceneDelegate,它不会使我在 iOS 13 之前运行的应用程序崩溃吗?

这是我当前设置rootVC的方法

上面的代码包含在我的Utilities.swift类中,并在我的类中调用AppDelegate.swift如下:

0 投票
4 回答
3063 浏览

ios - `scene(_scene: UIScene, continue userActivity: NSUserActivity)`在用户点击通用链接后启动应用程序时不会被调用

scene(_ scene: UIScene, continue userActivity: NSUserActivity)用户单击通用链接后启动应用程序时不会调用方法。

当用户单击通用链接后再次打开已启动的应用程序时,它工作正常。示例代码:

我尝试使用application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration,但是当用户单击链接时它永远不会被调用:

我尝试使用scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions)

我还尝试了以下方法:

scene.userActivity总是零在那里,我不能得到userActivity.webpageURL

我们如何识别链接被点击并且应用程序被启动(不仅仅是打开)?

0 投票
1 回答
418 浏览

swift - 在 Swift 5.0 中从 AppDelegate 实例化窗口失败

我正在使用 Xcode 11 和 Swift 5.0。我从另一个使用 Swift 4.2 的应用程序中复制了我的代码。该代码在 AppDelegate 中实例化一个 tabBarViewController,将窗口更改为 tabBarVC,并在满足某些条件时显示它。但它不适用于 Swift 5.0 和 Xcode 11。这是代码:

tabBarVC 已成功填充,但窗口仍然为零。然后应用程序显示不同的视图控制器。代码与我可以看到的原始应用程序没有什么不同。而那个仍然有效。想法将不胜感激。

0 投票
3 回答
11705 浏览

ios - 支持 iOS 12 和 13 时的 AppDelegate 和 SceneDelegate

我需要支持 iOS 12 和 iOS 13。

我应该在AppDelegate和之间复制代码SceneDelegate吗?

例如:

如果我不这样做,在 1 版本中我最终会出现黑屏,但如果我这样做并viewDidLoad以我可以看到的方法打印,HomeViewController它会被调用两次。

我更新了我的didFinishLaunchingWithOptions,我可以看到iOS13它仍然被调用了两次。

0 投票
0 回答
294 浏览

swift - iOS 13 问题:尽管不支持多窗口,但 AppDelegate 未触发背景音乐的返回

我有一个在 iOS 13 之前的 Xcode 中生成的应用程序。该应用程序不支持多个窗口。虽然我们之前在 AppDelegate 上经历过奇怪的事情,但自 iOS 13 发布以来似乎更加奇怪,我希望看看其他人是否也经历过类似的事情。

具体来说,如果我进入多任务模式(在旧 iPhone 上双击主页按钮或从屏幕底部向上滑动并暂停显示所有后台应用程序窗口)然后重新进入我的应用程序,AppDelegate 似乎在调试时会正确触发,但如果我的应用程序中的音乐(通常在 applicationDidBecomeActive 中带回)中留给它自己的设备不会恢复。

更新:这似乎特别与音乐/声音有关——iOS 似乎正在接受任何播放器并将它们设置为零,不允许我阻止它们。iOS 似乎也忽略了 AppDelegate 中加载和播放音乐的指令。这里有什么故事?

我从这篇文章中了解到:iOS 13 中没有调用 App 委托方法,重要的是要么不支持多个窗口,要么在新的 Scene Delegate 中管理传统上在 App Delegate 中调用的指令;但是,它是否比我称其为 Scene Delegate 更重要?iOS 13 中的这种行为是否有其他解释或我可以使用的其他解决方法?

AppDelegate 中的摘要代码:

0 投票
4 回答
1174 浏览

ios - 在 iOS 13 中使用 UIScenes,我如何 AirPlay 镜像屏幕(似乎默认为外部显示)

如果我在 iOS 12 设备(不使用 UIScene)和 AirPlay Mirror 上编译到我的 Apple TV,则应用程序会按预期镜像到电视上。

在 iOS 13 设备上,它似乎将其视为外部显示器,并对其进行格式化以适应屏幕(但我无法控制它)。

我更喜欢只是镜像它的旧功能。

如何在 iOS 13 上完成镜像?我在文档中四处寻找:

并且在其中UISceneConfiguration有一个role属性(UISceneSession.Role.windowExternalDisplay当我尝试 AirPlay Mirror 时它有),但它似乎没有任何价值,例如UISceneSession.Role.windowMirror.

0 投票
1 回答
2153 浏览

swift - 如何在 Xcode 中使用新的场景委托

当我的 iOS 应用程序从后台状态变为活动状态时,我正在尝试更改标签的文本或显示警报。

当我在 ViewController 类中调用一个函数时,只有 print() 方法可以正常工作。但是当我想与该类中的对象交互时,它会显示错误。

SceneDelegate.swift:

ViewController.swift:

0 投票
1 回答
536 浏览

ios - 尝试状态恢复时在基于文档的应用程序中获取“错误域 = NSCocoaErrorDomain 代码 = 257”

完整的错误信息是:

[main] *** 来自 FPBookmarkableStringFromDocumentURL 的错误,file:///private/var/mobile/Library/Mobile%20Documents/com~apple~CloudDocs/MY_APP/hello.txt -> Error Domain=NSCocoaErrorDomain Code=257“文件无法打开,因为您无权查看。”

当我重新启动我的应用程序并尝试重新打开以前打开的文件时(例如,当应用程序“后台”和释放内存时,从 SceneDelegate(在 iOS 13 中引入)引发此错误,因此我想重新加载场景的状态)。我按照这个 WWDC 会话https://developer.apple.com/videos/play/wwdc2019/212的步骤和从https://developer.apple.com/documentation/uikit/app_and_environment/scenes/下载的示例源代码支持_multiple_windows_on_ipad

我基本上复制了他们的 configure(window: UIWindow?, with activity: NSUserActivity) -> Bool 函数并将其转换为适合我的需要。它似乎完美无缺,但我得到了错误。

我正在使用https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/Handoff/AdoptingHandoff/AdoptingHandoff.html#/的“在基于文档的应用程序中采用切换”部分中描述的默认 NSUserActivity 技术/apple_ref/doc/uid/TP40014338-CH2-SW17

这是配置函数的主体:

如果有人知道解决方法,谢谢。

0 投票
2 回答
921 浏览

ios - iOS 13 应用程序的“启用多个窗口”设置(仅限 iPhone)

我知道新info.plist文件有一些新Application Scene Manifest条目,XCode 11并且只有项目,但是,如果我只选择我的应用程序仅适用于 iPhone,那么在此清单iOS 13中有选项有什么好处?Enable Multiple Windows鉴于多窗口应用程序体验仅适用于 iPad 应用程序。

0 投票
1 回答
409 浏览

swift - UISceneDelegate 和 UIApplicationDelegate 的“didBecomeActive”和“willResignActive”方法对之间的区别?

我的主要任务是在应用程序进入后台时将屏幕与非透明视图重叠以隐藏信息。官方解决方案在此处描述。

问题是它有时在 iOS 13 上不起作用。

我找到了这篇文章

它解释了如何sceneDidBecomeActive(_:)sceneWillResignActive(_:)工作。但是新项目有AppDelegate+ SceneDelegate,旧项目AppDelegate只有。我可以使用applicationDidBecomeActive(_:)andapplicationWillResignActive(_:)吗?或者我应该以某种方式迁移项目以使用UISceneDelegate(iOS 12 及更早版本不支持)?