使用DDHotKey包装器为cocoa / carbon实例化NSWindow

时间:2011-02-17 19:57:33

标签: cocoa nswindow nsevent ddhotkey

在Dave DeLong和其他人的帮助下,我已经给了我的教程应用程序一个很酷的热键效果,但我无法弄清楚如何让它实例化窗口。

我有以下设置:

首次运行时无效但具有NSStatusItem图标和菜单的计算器,以及打开主窗口的菜单选项。

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

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

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

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

让DDHotKey触发NSEvent会更好吗,或者甚至可以这样做吗?

我似乎对它的实现感到有些困惑。

1 个答案:

答案 0 :(得分:2)

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