2016-03-05 56 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