2016-12-26 3 views
1

Ich schreibe eine App in Swift, die in der Menüleiste am oberen Rand des Bildschirms lebt. Ich brauche sowohl einen globalen als auch einen lokalen Ereignismonitor, um das Popover bei einem bestimmten Tastendruck zu öffnen. Es gibt kein Problem mit dem lokalen Ereignismonitor, aber wenn der Benutzer den Tastaturbefehl (cmd + shift + 8) in einer App wie Finder betätigt, öffnet sich das Popover, aber der Mac-Fehler "Funk" wird ebenfalls abgespielt. Gibt es eine Möglichkeit, das zu deaktivieren? Vielleicht könnte die App den Sound essen oder als gültige Tastenkombination registrieren, damit der Sound nie abgespielt wird? HierVerhindern Fehler "Funk" Sound im Event-Monitor OS X

ist der Code:

 NSEvent.addGlobalMonitorForEvents(matching: NSEventMask.keyDown, handler: {(event: NSEvent!) -> Void in 
     if (event.keyCode == 28 && event.modifierFlags.contains(NSEventModifierFlags.command) && event.modifierFlags.contains(NSEventModifierFlags.shift)){ 
      self.togglePopover(sender: self) 
     } 
    }); 

    NSEvent.addLocalMonitorForEvents(matching: NSEventMask.keyDown, handler: {(event: NSEvent!) -> NSEvent? in 
     if (event.keyCode == 28 && event.modifierFlags.contains(NSEventModifierFlags.command) && event.modifierFlags.contains(NSEventModifierFlags.shift)){ 
      self.togglePopover(sender: self) 
     } 
     return event 
    }); 

Antwort

0

Ich landete mit MASShortcut als Behelfslösung Lösung für dieses Problem.