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 метод.

Другие вопросы по тегам