NSWindow不接收键盘事件

时间:2012-01-18 01:45:23

标签: macos nswindow

我正在从运行时加载的bundle创建一个NSWindow,所以我没有在app启动时创建的NSWindow的源代码。当我显示我的窗口时,它会收到鼠标事件,但它不会收到任何键盘事件。我尝试使用以下方法添加窗口:

[_myWindow makeKeyAndOrderFront:nil];
[[NSApplication sharedApplication].mainWindow addChildWindow:_myWindow ordered:NSWindowAbove];
[NSApp beginModalSessionForWindow:_myWindow];

在所有3种情况下,主窗口显示正在吃所有键盘事件。鼠标事件也会泄漏到原始窗口(我可以看到鼠标悬停在高光和按钮上,通过我的窗口响应点击)。我也尝试过:

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

任何让键盘事件落在我的窗口上的提示都将非常感激。

1 个答案:

答案 0 :(得分:0)

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

如果关键窗口没有收到事件,那么您可能会在某个地方找到event monitor,以便在调度事件之前抓取它们。