单击shift按钮时,我正在尝试修改nsstatusitem中的nsmenuitems。基本上我想把文本从“menuitem123”修改为“shift menuitem123”
我试着加上

NSEvent.addLocalMonitorForEventsMatchingMask


NSEvent.addGlobalMonitorForEventsMatchingMask

它适用于我的常规窗口应用程序,但对于nsstatusitem/nsmenuitems,只在不显示菜单时才调用或调用完成块。

最佳答案

您不需要监听事件来显示备用菜单项。您只需要创建两个菜单项并将第二个菜单项标记为备用菜单项,然后将其keyEquivalentModifierMask设置为NSShiftKeyMask。假设有一个名为statusItem的变量,则可以使用以下代码段:

let menu = NSMenu();

menu.addItemWithTitle("MenuItem123", action:"test:", keyEquivalent:"")
if let shiftItem = menu.addItemWithTitle("Shift MenuItem123", action:"test:", keyEquivalent:"") {
    shiftItem.alternate = true
    shiftItem.keyEquivalentModifierMask = Int(NSEventModifierFlags.ShiftKeyMask.rawValue)
}

statusItem.menu = menu

08-19 12:42