2015-11-06 7 views
0

Я разрабатываю приложение на панели инструментов, где хочу иметь глобальный ярлык. Я обнаружил, что эта возможность возможна только при использовании управления событиями Carbon, и, к счастью, для этой цели я нашел оболочку какао (DDHotKey). Однако я не могу заставить его работать. Вот что я делаю:DDHotKey в Xcode 7

DDHotKeyCenter * center = [[DDHotKeyCenter alloc] init]; 
DDHotKey *key= [c registerHotKeyWithKeyCode:1 modifierFlags:NSControlKeyMask target:self action:@selector(print) object:nil]; 

После этого кода, ключевой переменной равна нулю, что указывает на то, что пошло не так. Я также попытался отладить и обнаружил, что registerHotKeyWithKeyCode даже не вызван - точка прерывания в его реализации не запускается.

Следует упомянуть, что в настройках проекта я включил Carbon framework.

Документация DDHotKey не очень полная, поэтому я застрял на этом этапе.

ответ

2

Как представляется, DDHotKeyCenter предназначен для доступа к однотонному методу +[DDHotKeyCenter sharedHotKeyCenter]. Поскольку вы пытаетесь создать новый экземпляр с помощью alloc/init, возвращается nil.

Причина может быть найдено в этом методе +[DDHotkeyCenter allocWithZone:]:

+ (id)allocWithZone:(NSZone *)zone { 
    return sharedHotKeyCenter; 
} 

+allocWithZone возвращает переменную экземпляра, которая только инициализирован в методе +sharedHotkeyCenter.