You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何定义无需指定keyEquivalent且可正常交互的NSMenuItem?

解决NSMenuItem无快捷键且可点击的问题

核心原因

你之前用无参初始化后菜单项呈灰色,是因为没有给它设置action和target——系统找不到对应的响应方法,就会自动禁用该菜单项。

两种正确实现方式

方式1:用指定初始化器,传空字符串作为快捷键

直接使用带参数的初始化方法,把keyEquivalent设为空字符串"",就能创建无快捷键的可点击菜单项:

let showWindow1 = NSMenuItem(title: "Show Window 1", action: #selector(showWindow1), keyEquivalent: "")
// 若响应方法在当前类中,需设置target为self
showWindow1.target = self

方式2:无参初始化后补全必要属性

如果偏好无参初始化,必须手动设置action、target(可选显式设置空快捷键):

let showWindow1 = NSMenuItem()
showWindow1.title = "Show Window 1"
showWindow1.action = #selector(showWindow1)
showWindow1.target = self
showWindow1.keyEquivalent = "" // 默认就是空,显式设置更清晰

注意事项

响应方法必须添加@objc修饰,否则无法被系统识别:

@objc func showWindow1() {
    // 这里写显示窗口1的逻辑
}

内容的提问来源于stack exchange,提问作者swiftPunk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 02:18:10