我正在开发一个工具栏应用程序,希望在其中具有全局快捷方式。我发现只有通过使用Carbon事件管理才能实现此功能,幸运的是,我为此目的找到了可可包装器(DDHotKey)。但是,我无法使其正常工作。
这是我在做什么:
DDHotKeyCenter * center = [[DDHotKeyCenter alloc] init];
DDHotKey *key= [c registerHotKeyWithKeyCode:1 modifierFlags:NSControlKeyMask target:self action:@selector(print) object:nil];
在此代码之后,键变量为nil,表明出了点问题。我也尝试调试,发现甚至没有调用registerHotKeyWithKeyCode-不会触发其实现中的断点。
需要提及的是,我在项目设置中包括Carbon框架。
DDHotKey文档不是很全面,所以我停留在这一点上。
最佳答案
看起来,DDHotKeyCenter
是通过单例方法+[DDHotKeyCenter sharedHotKeyCenter]
访问的。由于您尝试使用alloc / init创建新实例,因此返回nil。
可以在此方法+[DDHotkeyCenter allocWithZone:]
中找到原因:
+ (id)allocWithZone:(NSZone *)zone {
return sharedHotKeyCenter;
}
+allocWithZone
返回仅在+sharedHotkeyCenter
方法中初始化的实例变量。关于objective-c - Xcode 7中的DDHotKey,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33576865/