2016-03-05 5 views
1

Я пытаюсь изменить свои NSMenuItems в моем NSStatusItem, когда нажата кнопка переключения. В основном я хочу, чтобы изменить текст из «MenuItem123» в «Сдвиг MenuItem123»NSStatusItem и NSMenuItem обнаруживают сдвиговый пресс

Я попытался добавления

NSEvent.addLocalMonitorForEventsMatchingMask 

и

NSEvent.addGlobalMonitorForEventsMatchingMask 

, какая работа для моих обычных оконных приложений, но для NSStatusItem/NSMenuItems блоки завершения не вызывают или не вызываются, а только тогда, когда меню не отображается.

+0

вы хотите пункт (ы) меню обновляется только при первом открытии меню или непрерывно (в то время как пользователь перемещает мышь вниз и меню видно, в зависимости от того, касается ли пользователь касания клавиши сдвига или нет)? Кроме того, вы настраиваете свое меню состояния через раскадровку или 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

 Смежные вопросы

  • Нет связанных вопросов^_^