在Dave DeLong和其他人在stackoverflow的帮助下,我给了我的教程应用一个很酷的热键效果,但是我不知道如何使它实例化窗口。

我有以下设置:

初次运行时未激活但具有NSStatusItem图标和菜单以及可打开主窗口的菜单选项的计算器。

另外,我已经将DDHotKeyCenter.h和DDHotKeyCenter添加到目录+链接Carbon.framework。

NSStatusMenu通过以下方式连接到窗口:

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


我想知道的是,是否有可能使用Blocks方法将热键触发的动作直接连接到IBAction,或者是否有中间步骤将它们连接起来?

让DDHotKey触发NSEvent会更好,还是可以做到这一点?

我对它的实现有点困惑。

最佳答案

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

10-07 13:13