【问题标题】:How to keep an app from quitting after closing its window on Mac Catalyst?如何防止应用程序在 Mac Catalyst 上关闭其窗口后退出?
【发布时间】:2020-04-13 20:12:36
【问题描述】:

为了探索 SwiftUI,我创建了一个示例 iOS 应用程序;在某些时候,我认为启用 Mac 支持会是一件有趣的事情,但令人惊讶的是,我得到了很好的结果,几乎没有额外的代码。

在 Mac 上测试应用程序时,我注意到应用程序在我关闭其窗口后退出,这不是大多数应用程序的工作方式。

尝试使用 applicationShouldHandleReopen 不是一个选项,因为 NSApplicationDelegate 对于 Catalyst 是不可能的,我无法在 UIApplicationDelegateUISceneDelegate 中找到对应的,并且我无法找到任何内容Apple 文档中的这个主题。

在 Catalyst 应用上实现传统 Mac 应用行为 (†) 的正确方法是什么?

(†) 传统的 mac 应用程序行为:当应用程序窗口关闭时,应用程序图标仍保留在文档中,如果您单击它,应用程序窗口会再次出现

【问题讨论】:

  • 这不是applicationShouldTerminateAfterLastWindowClosed吗?还是因为它来自 iOS 世界,所以催化剂很特别?
  • 如果你没有多个窗口,这正确的行为
  • 查看例如日历或系统偏好设置
  • 感谢您的cmets;您提到的代表属于 NSApplicationDelegate,这在 Catalyst 上不可用。
  • 我也很想知道这一点。我遇到的唯一一件事是tweet from Simon B. Støvring,它使用 swizzling 解决了这个问题。

标签: swift swiftui uiapplicationdelegate mac-catalyst


【解决方案1】:

Original answer

总而言之,请执行以下操作之一

  • 使用项目文件
    1. 转到您的项目文件,点击您的目标
    2. 转到“常规”,然后转到“部署信息”
    3. 转到“状态栏样式”,然后启用“支持多个窗口”
  • 使用Info.plist
    1. 展开“信息属性列表”
    2. 展开“应用场景清单”
    3. 将“启用多个窗口”设置为“是”

Another answer in the same question 建议将NSSupportsAutomaticTermination 设置为NO。这也有效,但我不确定与NSSupportsAutomaticTermination 混淆是否会给您带来“惊喜”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多