Позвольте мне объяснить, какие шаги я предпринял, чтобы заставить его работать:
- Создать окно xib
- Владельцем файла этого класса в моем случае является PreferencesWindowController
- Создайте ссылочный выход из окна для владельца файла, щелкнув правой кнопкой мыши окно и перетащив его на владельца файла
- Добавить пользовательский вид в ваше окно
- Вы должны подключить делегата ShortcutRecorder к «Владельцу файла». Для этого щелкните правой кнопкой мыши SRRecorderControl и перетащите делегата к «Владельцу файла» слева от вас.
После этого: ShortcutRecorder только записывает горячую клавишу и оставляет вам, что с ней делать. Вам нужно использовать PTHotKeyCenter (который поставляется с ShortcutRecorder), или вы могли бы реализовать обработку ярлыков самостоятельно.
ShortcutRecorder содержит отличную демонстрацию, которая демонстрирует использование ShortcutRecorder в сочетании с PTHotKeyCenter. Это работает так:
- Прослушивание событий из ShortcutRecorder (что вы уже делаете, но без установки делегата)
- Проверьте, установлена ли переменная globalHotKey
- Если это так, выгрузить предыдущую горячую клавишу
- Инициируйте новую горячую клавишу с настройками из ShortcutRecorder
- Установите цель и действие, чтобы фактически захватить горячую клавишу, после нажатия
- Сохранить горячую клавишу в общем центре (с этого момента горячая клавиша будет работать)
Маленький образец, из их источника:
if (globalHotKey != nil)
{
[[PTHotKeyCenter sharedCenter] unregisterHotKey: globalHotKey];
[globalHotKey release];
globalHotKey = nil;
}
globalHotKey = [[PTHotKey alloc] initWithIdentifier:@"SRTest"
keyCombo:[PTKeyCombo keyComboWithKeyCode:[shortcutRecorder keyCombo].code
modifiers:[shortcutRecorder cocoaToCarbonFlags: [shortcutRecorder keyCombo].flags]]];
[globalHotKey setTarget: self];
[globalHotKey setAction: @selector(hitHotKey:)];
[[PTHotKeyCenter sharedCenter] registerHotKey: globalHotKey];
Осталось только обработчик горячей клавиши:
- (void)hitHotKey:(PTHotKey *)hotKey
{
NSLog(@"Hotkey pressed!");
}
Вы можете легко сохранить настройки горячих клавиш в UserDefaults, чтобы загружать их при каждом запуске приложения.