Xcode 7 中的 DDHotKey

DDHotKey in Xcode 7

我正在开发一个工具栏应用程序,我想在其中使用全局快捷方式。我发现只有通过使用 Carbon 事件管理才能实现此功能,幸运的是我为此找到了一个 Cocoa 包装器 (DDHotKey)。但是,我无法让它工作。 这是我在做什么:

DDHotKeyCenter * center = [[DDHotKeyCenter alloc] init];
DDHotKey *key= [c registerHotKeyWithKeyCode:1 modifierFlags:NSControlKeyMask target:self action:@selector(print) object:nil];

在这段代码之后,key 变量为 nil,表明出现了问题。我还尝试调试并发现甚至没有调用 registerHotKeyWithKeyCode - 其实现中的断点未被触发。

需要指出的是,我在项目设置中包含了 Carbon 框架。

DDHotKey的文档不是很全面,所以就卡在了这里

看起来,DDHotKeyCenter 是要通过单例方法+[DDHotKeyCenter sharedHotKeyCenter] 来访问的。由于您正在尝试使用 alloc/init 创建新实例,因此返回 nil。

原因可以看这个方法+[DDHotkeyCenter allocWithZone:]:

+ (id)allocWithZone:(NSZone *)zone {
    return sharedHotKeyCenter;
}

+allocWithZone returns 仅在 +sharedHotkeyCenter 方法中初始化的实例变量。