如何移除macOS应用Dock图标菜单中的默认窗口选项
macOS单窗口应用移除Dock菜单默认窗口选项的实现方案
通过实现applicationDockMenu:返回自定义菜单的方式,仅能在Dock菜单中追加自定义条目,无法移除系统默认生成的窗口选择区块,移除该区块无需魔改菜单逻辑,直接修改窗口属性即可:
- 核心逻辑:系统自动向Dock菜单、顶部菜单栏「窗口」菜单注入窗口条目的判断依据是
NSWindow的excludedFromWindowsMenu属性,将主窗口的该属性设置为true/YES后,对应窗口就不会出现在Dock菜单的默认窗口列表区域。 - Objective-C 实现代码:
// 可在AppDelegate的applicationDidFinishLaunching:方法中,窗口初始化完成后调用 [self.window setExcludedFromWindowsMenu:YES];
- Swift 实现代码:
// 在窗口初始化阶段调用即可 window.isExcludedFromWindowsMenu = true
适配提示:如果是基于SwiftUI开发的应用,需要先拿到主窗口对应的
NSWindow实例再修改属性,可通过接入AppDelegate、自定义NSWindowRepresentable包装视图的方式获取窗口引用完成配置。属性生效后,对应窗口不会再出现在Dock菜单默认窗口区,也不会出现在系统标准窗口菜单的条目列表中,完全匹配单窗口应用的交互设计。
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

