单击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