我无法在Swift OSX项目中实现MASShortcut(docs here)来监听全局热键。我已经设法通过CocoaPods导入框架,我有一个工作的MASShortcutView实例:
@IBOutlet weak var testShortcutView:MASShortcutView!
我还想出了如何使用快捷方式监控和触发某些内容(请告诉我这是否正确):
let shortcut = MASShortcut(keyCode: keycode, modifierFlags: modifierkeys)
MASShortcutMonitor.sharedMonitor().registerShortcut(shortcut, withAction: callback)
这里的问题是,如何从MASShortcutView获取keyCode和modifierFlags?
我真的非常感谢你,我到处搜索,我找不到一个如何在swift上做这个的例子。我所能找到的只是客观的,我无法弄明白。
答案 0 :(得分:8)
以下代码将为Cmd + Shift + K组合键注册快捷键处理程序
let shortcut = MASShortcut.init(keyCode: UInt(kVK_ANSI_K), modifierFlags: UInt(NSEventModifierFlags.CommandKeyMask.rawValue + NSEventModifierFlags.ShiftKeyMask.rawValue))
MASShortcutMonitor.sharedMonitor().registerShortcut(shortcut, withAction: {
print("Hello world")
})
Cmd和Shift - 修改键。您应该在modifierFlags参数中设置它们。 NSEventModifierFlags枚举中提供了可能值的完整列表。
为方便起见,我已将示例项目放在github上:
https://github.com/melifaro-/ShortCutSwiftSample
处理快捷方式更改:
shortcutView.shortcutValueChange = { (sender) in
let callback: (() -> Void)!
if self.shortcutView.shortcutValue.keyCodeStringForKeyEquivalent == "k" {
callback = {
print("K shortcut handler")
}
} else {
callback = {
print("Default handler")
}
}
MASShortcutMonitor.sharedMonitor().registerShortcut(self.shortcutView.shortcutValue, withAction: callback)
}
我已将更改推送到回购。我建议尝试以下方案:
使用快捷方式视图:
设置Cmd + Shift + K快捷方式
设置Cmd + Shift + J快捷方式
尝试此快捷方式 - 应执行不同的回调
希望它有所帮助。
答案 1 :(得分:1)
在Swift 5中
ClientBuilder