Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为cocoa/carbon实例化NSWindow使用DDHotKey包装器_Cocoa_Nswindow_Nsevent_Ddhotkey - Fatal编程技术网

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

为cocoa/carbon实例化NSWindow使用DDHotKey包装器,cocoa,nswindow,nsevent,ddhotkey,Cocoa,Nswindow,Nsevent,Ddhotkey,在Dave DeLong和stackoverflow上的其他人的帮助下,我给了我的教程应用程序一个很酷的热键效果,但我不知道如何让它实例化窗口 我有以下设置: 第一次运行时未激活的计算器,但具有NSStatusItem图标和菜单,以及打开主窗口的菜单选项 此外,我还将DDHotKeyCenter.h和DDHotKeyCenter添加到链接Carbon.framework的目录中 NSStatus菜单通过以下方式连接到窗口: -(IBAction)activateMain:(id)sender{

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

我有以下设置:

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

此外,我还将DDHotKeyCenter.h和DDHotKeyCenter添加到链接Carbon.framework的目录中

NSStatus菜单通过以下方式连接到窗口:

-(IBAction)activateMain:(id)sender{
  [NSApp activateIgnoringOtherApps:YES];}
我想知道的是,是否可以使用Blocks方法将热键触发的操作直接连接到iAction,或者是否有一些中间步骤来连接它们

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

谢谢你的帮助,戴夫!我还有一个问题。在热键已设置的情况下,如何启动应用程序?到目前为止,我已经环顾了很多地方,还没有发现我如何才能做到这一点。