Использование оболочки DDHotKey для создания какао / углерода NSWindow - PullRequest
1 голос
/ 17 февраля 2011

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

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

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

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

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

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

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

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

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

1 Ответ

2 голосов
/ 17 февраля 2011

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];
...
...