问题标签 [uiscene]

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 回答
189 浏览

ios13 - 在 iOS/iPadOS 13 上手动保存场景 NSUserActivity

我已经使用 实现了 iOS/iPadOS 13 状态恢复NSUserActivity,主要是因为我的应用程序支持多个场景。

问题是,当我运行具有两个并排场景的模拟器并通过重建活动强制重新启动应用程序时,不会保存活动,并且重新启动时 UI 没有正确恢复。

另一方面,如果我首先返回 iPad 主屏幕,然后强制重新启动应用程序,则活动会正确恢复。

这是否意味着我的应用程序崩溃会阻止保存这些活动,从而导致重新启动时出现不一致的 UI 状态?

我怎么能定期“强制”储蓄活动(被stateRestorationActivity(for scene:)调用)?

0 投票
2 回答
1966 浏览

ios - UIScene concept is not clear

Before we all get used to the approach when in AppDelegate we create UIWindow and then set rootViewController for this Window. Sometimes when we needed to have a custom alert we can create a new UIWindow that will be above.

Now Xcode automatically creates UIScene and creates UIWindow base on this scene. I would appreciate if somebody can explain in details how to use this scenes in real life and what is their major benefit from using just UIWindow in AppDelegate

Because this article doesn't explain much

0 投票
1 回答
946 浏览

swiftui - iOS 13 中 SwiftUI 中的状态栏高度

如何获取当前场景的状态栏高度以在 SwiftUI 视图中使用?

看起来关键是访问当前场景。从视图控制器,您可以使用它 view.window?.windowScene来到达场景,但是在 SwiftUI 视图中呢?

0 投票
0 回答
223 浏览

ios - 在 Info.plist 中配置场景时不使用 AppDelegate

我有一个旧的(Objective-C)iOS 应用程序,我扩展到 Mac Catalyst,现在我想在不影响 iOS 版本的情况下为 Mac 版本添加多窗口支持。根据几个教程(示例),我设置了一个SceneDelegate这样的......

...将此添加到 AppDelegate ...

...并将其添加到 Info.plist:

我仍在AppDelegate'application:didFinishLaunchingWithOptions:方法中进行大量设置,但从未调用过该方法,也从未调用过,application:configurationForConnectingSceneSession:options:并且控制台中没有错误。于是我把场景的定义从Info.plist文件移到了application:configurationForConnectingSceneSession:options:方法中,像这样……

...在 Info.plist 中只留下这个:

现在它按预期工作。

在 Info.plist 中定义场景配置是否应该完全绕过AppDelegate?根据文档,似乎应该绕过application:configurationForConnectingSceneSession:options:,但我没有看到任何迹象表明它也应该绕过application:didFinishLaunchingWithOptions:一些教程明确表示该方法仍应运行。

我尝试删除该application:configurationForConnectingSceneSession:options:方法,以防在两个地方定义配置会混淆 SDK,但application:didFinishLaunchingWithOptions:仍然没有被调用,只要UISceneConfigurations在 Info.plist 中。

我可以application:didFinishLaunchingWithOptions:通过在第一行添加断点来判断是否被调用。除非我将UISceneConfigurations字典添加到 Info.plist 中,否则断点会被命中,但仅进行该更改会导致断点不会被命中。

0 投票
1 回答
74 浏览

ios - 模态对话框在基于 Mac 催化剂场景的应用程序中中断响应者链

我有一个基于多窗口场景(不是 SwiftUI)的 iPad 应用程序,我正在使用 mac 催化剂适应 Mac。我在主菜单行为方面遇到问题。菜单使用 func buildMenu() 在 AppDelegate.swift 中构建。例如,我有一个 Open Image... 菜单项,它在我的主视图控制器中使用了一个选择器。这是 buildMenu() 中的代码:

首次打开视图控制器时,它已启用并且工作正常。看: 打开图像... 菜单项已激活

然后我打开任何模态对话框,例如关于对话框,关闭它后,打开图像... 菜单项被停用,就好像选择器不再在响应程序链中一样,尽管一切都在视图控制器上运行。

打开图像... 菜单项已停用

我不明白这里发生了什么。这种功能在非多窗口催化剂应用程序上运行良好。

更新:这个问题与基于场景的应用程序无关。它是一个基于 UIDocument 的应用程序,UIDocumentBrowserViewController 以模态方式呈现主视图控制器。主视图控制器是第一响应者,一切都很好,但是一旦你在它上面打开另一个模式窗口,就像系统生成的关于对话框一样,原始文档浏览器视图控制器成为第一响应者和主视图控制器不再在窗口层次结构中(即使文档浏览器视图控制器不可见,并且主视图控制器仍然显示并正常工作)。如果有人有处理这个问题的经验,我会很感激他们的建议。

0 投票
0 回答
22 浏览

ios - 在具有振幅的 Smartlook 中使用 SLSetupConfiguration 时出错

我正在尝试在用语言 Objective-c 开发的 Smartlook 中添加振幅。但是,当使用文档中提供的代码块时,我会遇到错误,并且在查找信息时我找不到任何指示如何更新它的信息,基本上 smartlook 页面上的所有代码都已弃用。代码 :

错误 :

选择器“setupAndStartRecordingWithConfiguration:”没有已知的类方法

0 投票
1 回答
61 浏览

ios - [Carplay]:同时打开 carplay 应用时,主应用在视图控制器演示时崩溃

我刚刚实现了我们的新 Carplay 功能@Qobuz,但我遇到了一个奇怪的崩溃,我无法找到答案。

设想:

  • 打开 carplay 应用程序并同时在手机上使用该应用程序,如果我打开一个呈现的视图控制器,该应用程序在演示结束时崩溃
  • 如果 carplay 应用程序未打开,则完全相同的操作不会使应用程序崩溃。

语境:

  • 我在模拟器和设备上都崩溃了(目前正在运行iOS 14.2模拟器)
  • 我正在使用 UIScenes,一个用于应用程序,一个用于 carplay。我相信,经过多次检查,我正确实施和配置了我的场景
  • 目前,我仍然在我的 AppDelegate 中保留属性窗口
  • 我们有两个版本的 Carplay,一个用于 iOS 14 以下的 iOS 版本,一个用于 iOS 14 及以上版本。这意味着我放了一些@available(iOS 14.0, *),因为我们支持的最低版本是 iOS 12.0

这是崩溃日志: 崩溃日志

这是 Info.plist 场景清单

希望你们中的一个人能发挥他的魔力让我摆脱困境:)

提前致谢 !

0 投票
1 回答
34 浏览

ios - Apple 文档中的“场景支持”到底是什么意思?

https://developer.apple.com/documentation/uikit/app_and_environment/managing_your_app_s_life_cycle

场景支持是一项可选功能

应用程序必须明确选择加入场景,您可以通过更新应用程序的配置设置来做到这一点。

在 iOS 12 及更早版本以及不支持场景的应用程序中,UIKit 将所有生命周期事件传递给 UIApplicationDelegate 对象。

但是,默认情况下,未选择加入的应用程序具有场景委托,并通过场景委托(而不是应用委托)接收所有生命周期事件报告。这与 Apple 的文档相矛盾,这不是第一次。文档不应该说明多场景支持是一个可选功能吗?