Использование оболочки DDHotKey для создания какао / углерода NSWindow

С помощью Дэйва ДеЛонга и других специалистов по stackru я дал своему учебному приложению крутой эффект горячей клавиши, но я не могу понять, как заставить его создать экземпляр окна.

У меня есть следующие настройки:

Калькулятор, который не активен при первом запуске, но имеет значок и меню NSStatusItem с опцией меню, которая открывает главное окно.

Кроме того, я добавил DDHotKeyCenter.h и DDHotKeyCenter в каталог + связал Carbon.framework.

NSStatusMenu подключается к окну через:

-(IBAction)activateMain:(id)sender{
  [NSApp activateIgnoringOtherApps:YES];}

Мне было интересно, можно ли подключить действия, выполняемые горячей клавишей, с помощью метода Blocks, к IBAction напрямую или есть какой-то промежуточный шаг для их подключения?

Было бы лучше, чтобы DDHotKey запустил NSEvent, или он вообще может это сделать?

Я, кажется, немного смущен его реализацией.

1 ответ

Решение

DDHotKey не "запускает NSEvent". Он вызывает метод для объекта. Вы можете очень легко настроить вашу горячую клавишу, чтобы запустить activateMain: метод любого объекта, которым он принадлежит:

...
DDHotKeyCenter * c = [[DDHotKeyCenter alloc] init];
[c registerHotKeyWithKeyCode... target:self action:@selector(activateMain:) object:nil];
...

Или, если вы хотите использовать блок, вы можете сделать:

...
DDHotKeyTask task = ^(NSEvent *hkEvent) {
    [NSApp activateIgnoringOtherApps:YES];
};
DDHotKeyCenter * c = [[DDHotKeyCenter alloc] init];
[c registerHotKeyWithKeyCode... task:task];
...
Другие вопросы по тегам