如何彻底移除macOS应用所有命令?ShowTabBar等未被.commandsRemoved()清除
解决macOS App中
.commandsRemoved()无法移除ShowTabBar/ShowAllTabs命令的问题 .commandsRemoved()仅能移除系统全局默认命令,而ShowTabBar、ShowAllTabs这类属于TabView关联的窗口级命令,不在全局命令的覆盖范围内,因此需要通过自定义Commands来处理。
解决方案
通过在WindowGroup上添加.commands修饰器,替换或移除标签页相关的命令组:
方法1:完全移除所有窗口默认命令
直接使用EmptyCommands()覆盖所有窗口级命令,包括标签栏相关选项:
@main struct testApp: App { var body: some Scene { WindowGroup { ContentView() } .commandsRemoved() .commands { EmptyCommands() } } }
方法2:针对性移除标签页命令组
如果需要保留其他窗口命令,仅替换标签页相关的命令组为空:
@main struct testApp: App { var body: some Scene { WindowGroup { ContentView() } .commandsRemoved() .commands { CommandGroup(replacing: .windowTabbing, with: {}) } } }
说明
.windowTabbing是系统定义的标签页命令组,包含ShowTabBar、ShowAllTabs等选项,替换为空后这些命令会从菜单栏中消失。- 两种方法都能解决你遇到的部分命令未被移除的问题,可根据是否需要保留其他窗口命令选择对应方案。
内容的提问来源于stack exchange,提问作者swiftPunk
相关产品推荐
相关产品推荐

