我正在从运行时加载的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]];
任何让键盘事件落在我的窗口上的提示都将非常感激。
答案 0 :(得分:0)
您可以将NSApplication子类化并覆盖sendEvent:
以在将事件发送到keyWindow之前打印[[NSApplication sharedApplication] keyWindow]
(不要忘记调用super来实际发送事件)。
如果关键窗口没有收到事件,那么您可能会在某个地方找到event monitor,以便在调度事件之前抓取它们。