1

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

我有以下设置:

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

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

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

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

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

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

我似乎对它的实现有点困惑。

4

1 回答 1

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];
...
于 2011-02-17T20:16:27.657 回答