让NSRunAlertPanel在任何空间显示警报吗? - Objective-C / 10.7 +

时间:2012-10-27 20:18:32

标签: objective-c cocoa nsalert

我正在开发一个标记为LSUIElement的应用程序,其主窗口是一个NSPanel'附加'到状态栏。有时我需要显示一个正常的警报面板(通过使用NSRunAlertPanel或NSAlert)。但是,非常重要的是,面板始终显示在用户当前所在的空间上(否则用户可能无法立即看到它并且重要的是他确实如此)。

问题是警报总是显示在用户最后与应用程序窗口交互的空间上,而不是当前空间上。因此,例如,如果在空间编号1上我打开并关闭我的应用程序的NSPanel,那么我移动到2号空间,一段时间后我的应用程序显示警报,该警报将显示在1号空间,而不是2。在我决定切换到第一个空格之前,我(或普通用户)将不会看到警报。

有没有办法改变这种行为(=使警报始终显示在当前空间)?

1 个答案:

答案 0 :(得分:2)

不完全是您要求的,但可能在您显示警报窗口之前,使用NSWindowCollectionBehaviorCanJoinAllSpaces将其收集行为设置为setCollectionBehavior:。然后窗口应出现在所有空格中,包括当前空格......