我正在开发一个工具栏应用程序,希望在其中具有全局快捷方式。我发现只有通过使用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/

10-13 07:57