您可以通过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已经让开发人员意识到它是有效的。