Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.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
Macos NSWindow不';无法接收键盘事件_Macos_Nswindow - Fatal编程技术网

Macos NSWindow不';无法接收键盘事件

Macos NSWindow不';无法接收键盘事件,macos,nswindow,Macos,Nswindow,我正在从运行时加载的捆绑包创建NSWindow,因此我没有在应用程序启动时创建的NSWindow的源代码。当我显示窗口时,它接收鼠标事件,但不接收任何键盘事件。我已尝试使用以下方法添加窗口: [_myWindow makeKeyAndOrderFront:nil]; [[NSApplication sharedApplication].mainWindow addChildWindow:_myWindow ordered:NSWindowAbove]; [NSApp beginModalSess

我正在从运行时加载的捆绑包创建NSWindow,因此我没有在应用程序启动时创建的NSWindow的源代码。当我显示窗口时,它接收鼠标事件,但不接收任何键盘事件。我已尝试使用以下方法添加窗口:

[_myWindow makeKeyAndOrderFront:nil];
[[NSApplication sharedApplication].mainWindow addChildWindow:_myWindow ordered:NSWindowAbove];
[NSApp beginModalSessionForWindow:_myWindow];
在所有3种情况下,主窗口似乎正在吞噬所有键盘事件。鼠标事件也会泄漏到原始窗口(我可以看到鼠标悬停在突出显示上,按钮会响应通过我窗口的单击)。我也尝试过:

[_myWindow makeMainWindow];
[_myWindow orderWindow:NSWindowAbove relativeTo:[originalWindow windowNumber]];

任何让键盘事件登陆我的窗口的提示都将不胜感激。

您可以将NSApplication子类化并覆盖
sendEvent:
以在将事件发送到keyWindow之前打印
[[NSApplication sharedApplication]keyWindow]
(不要忘记调用super来实际发送事件)


如果“关键点”窗口未接收到事件,则您可能有一个在事件发送之前捕获事件的位置。

FYI,获取事件的窗口是“关键点”窗口,而不是主窗口。MakeKeyandDerfront应将“我的”窗口设为“关键点”窗口。它似乎仍然没有得到事件。我不确定原始窗口是如何抓取每个事件的…您是否解决了此问题?是否有任何更改,即有一个事件监视器将事件记录在窗口之前?