【发布时间】:2014-05-06 21:32:58
【问题描述】:
考虑以下场景。我有一个有两个窗口的应用程序:
- 包含应用所有功能的主窗口;
-
还有一个辅助窗口,可以使用全局快捷方式或单击应用程序的状态栏图标来调用。它看起来像这样: 这是一个简单的窗口,可以在不打开主窗口的情况下快速向应用程序添加数据——可能会改变空间并扰乱用户的工作流程。
窗口漂浮在其他一切之上(位于
NSModalPanelWindowLevel)并且可以加入所有空间(NSWindowCollectionBehaviorCanJoinAllSpaces)
问题来了:当快速添加窗口被排序时(X 按钮或 Esc 被按下),主窗口被设为键并排序在前面(前提是它在当前空间的窗口列表中的某个位置)。
这不是我想要的行为。通常,当应用程序的窗口关闭时,是的,您希望激活下面的应用程序窗口,但不是在这里——这是一个“帮助”窗口,应该或多或少独立于应用程序本身工作。当我在 Safari 中并调用快速添加窗口时,我只想添加一些数据,单击 Return,然后我希望它消失——我希望上一个窗口 (Safari) 是关键并位于顶部,而不是我的应用程序的主窗口(当然,除非我的应用程序的主窗口在调用快速添加之前是关键)。
那么,如何在不激活下方窗口的情况下关闭 NSWindow?
我想不通。我唯一的想法是,也许你可以制作一个显示这个辅助窗口的辅助应用程序——但这听起来像很多工作(在进程之间来回发送数据,所有这些......)。一定有更简单的方法!
【问题讨论】:
标签: objective-c macos cocoa nswindow appkit