DDHotKey в Xcode 7
Я занимаюсь разработкой приложения для панели инструментов, в котором я хочу использовать глобальный ярлык. Я обнаружил, что эта возможность возможна только при использовании управления событиями Carbon, и, к счастью, я нашел для этого оболочку Cocoa (DDHotKey). Однако я не могу заставить его работать. Вот что я делаю:
DDHotKeyCenter * center = [[DDHotKeyCenter alloc] init];
DDHotKey *key= [c registerHotKeyWithKeyCode:1 modifierFlags:NSControlKeyMask target:self action:@selector(print) object:nil];
После этого кода ключевой переменной является ноль, что указывает на то, что что-то пошло не так. Я также попытался отладить и обнаружил, что registerHotKeyWithKeyCode даже не вызывается - точка останова в его реализации не срабатывает.
Надо отметить, что я включил Carbon framework в настройки проекта.
Документация по DDHotKey не очень полная, поэтому я застрял на этом.
1 ответ
Как это выглядит, DDHotKeyCenter
предназначен для доступа через метод синглтона +[DDHotKeyCenter sharedHotKeyCenter]
, Так как вы пытаетесь создать новый экземпляр с помощью alloc / init, возвращается nil.
Причину можно найти в этом методе +[DDHotkeyCenter allocWithZone:]
:
+ (id)allocWithZone:(NSZone *)zone {
return sharedHotKeyCenter;
}
+allocWithZone
возвращает переменную экземпляра, которая инициализируется только в +sharedHotkeyCenter
метод.