下面是我简单的AppDelegate.swift类.
// AppDelegate.swift import Cocoa @NSApplicationMain class AppDelegate: NSObject, NSApplicationDelegate { func applicationDidFinishLaunching(aNotification: NSNotification) { NSEvent.addGlobalMonitorForEventsMatchingMask(NSEventMask.KeyDownMask, handler: keyDown); } func keyDown(event:NSEvent!) { print("key down is \(event.keyCode)"); } }
怎么没有打印关键事件?我错过了什么?我试过四处寻找,但无法弄明白.
据NSEvent.h
有关addGlobalMonitorForEventsMatchingMask:handler:
:
如果启用了辅助功能,或者您的应用程序受信任以进行辅助功能访问,则只能监视与密钥相关的事件(请参阅AXUIElement.h中的AXIsProcessTrusted).请注意,不会为发送到您自己的应用程序的事件调用您的处理程序.
为了在NSEvent
当前拥有全局使用,您必须允许通过辅助功能设置来信任您的应用程序.如果你想在NSEvent
本地使用,你可以这样做:
func applicationDidFinishLaunching(aNotification: NSNotification) { NSEvent.addLocalMonitorForEventsMatchingMask(NSEventMask.KeyDownMask, handler: keyDown); } func keyDown(event: NSEvent!) -> NSEvent { NSLog("key down is \(event.keyCode)"); return event }