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
方法中初始化的实例变量。
我正在开发一个工具栏应用程序,我想在其中使用全局快捷方式。我发现只有通过使用 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
方法中初始化的实例变量。