NSStatusItem和NSMenuItem检测移位按

时间:2016-03-05 17:48:05

标签: swift macos cocoa nsmenuitem nsstatusitem

单击shift按钮时,我正在尝试修改NSStatusItem中的NSMenuItems。基本上我想将文本从“MenuItem123”修改为“Shift MenuItem123”

我尝试添加

NSEvent.addLocalMonitorForEventsMatchingMask

NSEvent.addGlobalMonitorForEventsMatchingMask

适用于我的常规窗口应用程序,但对于NSStatusItem / NSMenuItems,不会调用或调用完成块,但仅在未显示菜单时才会调用。

1 个答案:

答案 0 :(得分:5)

您无需收听事件即可显示备用菜单项。您只需创建两个菜单项并将第二个菜单项标记为备用项,并将其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