5

我正在为 iPad 编写纸牌游戏应用程序,并希望使用 Catalyst 将其带到 Mac 上。该游戏不是支持多个窗口的游戏。但是,我在 iPad 上的模态表单中显示了一个统计屏幕,我宁愿在 Catalyst 的新窗口中打开它。这是我想要添加新窗口的唯一场景。

有没有办法让我支持多窗口应用程序,但仅限于应用程序的 Catalyst 版本?如果我在 Xcode 的应用程序目标设置中选中“支持多个窗口”复选框,那么用户突然被授予从 App Expose 在 iPad 应用程序上打开更多窗口的选项,这不是我正在寻找的功能。

在此处输入图像描述

4

1 回答 1

6

您可以通过UIApplicationSceneManifest在您的 中添加一秒来执行此操作Info.plist,并-macos添加到其中,其设置与 iOS/iPadOS 目标的设置不同。例如:

<key>UIApplicationSceneManifest</key>
<dict>
    <key>UIApplicationSupportsMultipleScenes</key>
    <false/>
    <key>UISceneConfigurations</key>
    <dict>
        <key>UIWindowSceneSessionRoleApplication</key>
        <array>
            <dict>
                <key>UISceneConfigurationName</key>
                <string>Default Configuration</string>
                <key>UISceneDelegateClassName</key>
                <string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
            </dict>
        </array>
    </dict>
</dict>
<key>UIApplicationSceneManifest-macos</key>
<dict>
    <key>UIApplicationSupportsMultipleScenes</key>
    <true/>
    <key>UISceneConfigurations</key>
    <dict>
        <key>UIWindowSceneSessionRoleApplication</key>
        <array>
            <dict>
                <key>UISceneConfigurationName</key>
                <string>Default Configuration</string>
                <key>UISceneDelegateClassName</key>
                <string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
            </dict>
        </array>
    </dict>
</dict>

此 plist 将允许支持 macOS 上的多个场景,但不支持 iPadOS。

此外,您可以通过删除新场景按钮来防止通过文件菜单创建新窗口。将此代码添加到您的 App Delegate。

- (void)buildMenuWithBuilder:(id<UIMenuBuilder>)builder {
    [builder removeMenuForIdentifier:UIMenuNewScene];
}

任何地方都没有记录使用特定于平台的密钥,但@stroughtonsmith已经让开发人员意识到它是有效的。

于 2020-06-15T22:41:17.417 回答