0

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

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

在此代码之后,关键变量为 nil,表示出现问题。我还尝试调试,发现甚至没有调用 registerHotKeyWithKeyCode - 没有触发其实现中的断点。

需要提一下,我在项目设置中包含了 Carbon 框架。

DDHotKey 文档不是很全面,所以我停留在这一点上。

4

1 回答 1

2

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

原因可以在这个方法中找到+[DDHotkeyCenter allocWithZone:]

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

+allocWithZone返回一个仅在+sharedHotkeyCenter方法中初始化的实例变量。

于 2015-11-07T11:21:06.497 回答