2016-03-05 27 views
1

我试图在点击shift按钮时修改我的NSStatusItem中的NSMenuItems。基本上,我想从“MenuItem123”修改文本“移动MenuItem123”NSStatusItem和NSMenuItem检测到移位按下

我尝试添加

NSEvent.addLocalMonitorForEventsMatchingMask 

NSEvent.addGlobalMonitorForEventsMatchingMask 

这工作我经常窗口的应用程序,但对于NSStatusItem/NSMenuItems完成块没有被调用或被调用,但只有当菜单不显示。

+0

你想要的菜单项目(S)才更新(在用户向下移动鼠标菜单是否可见,取决于用户是否正在接触换档键)?另外,您是通过故事板还是xib或完全编程设置状态菜单? –

回答

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 
+0

不错,你真是太神奇了......谢谢:) – VTS12

+0

也有小小的变化,不得不用'Int(NSEventModifierFlags.ShiftKeyMask.rawValue)'代替 – VTS12

+1

对不起,我已经更新了回复! – fjoachim