【问题标题】:NSAlert in Fullscreen全屏显示 NSAlert
【发布时间】:2009-07-31 23:02:17
【问题描述】:

我正在创建一个全屏应用程序,并且想知道是否有某种方法可以使 NSAlert 超越我创建的 CGDisplayCapture。现在,NSAlert 正在显示捕获的后面显示。我的主窗口显示得很好(在使用 setLevel 调整后),但 NSAlert 似乎没有正常工作。我试图这样做:

[[alertBox window] setLevel:CGShieldingWindowLevel()];

但这似乎也不起作用。我想一定有办法做到这一点,但我只是不确定从哪里开始。

任何帮助将不胜感激。

【问题讨论】:

    标签: cocoa fullscreen nsalert


    【解决方案1】:

    捕获显示时不支持显示窗口的方式。这就是捕获显示的意义。

    【讨论】:

    • 嗨,Ahruman:好的,我明白了。那么,是否有任何受支持的方法可以在我的窗口后面设置一个“屏幕”,以便用户无法更改应用程序、使用 Spotlight 等?
    【解决方案2】:

    如果您想显示多窗口 UI 但禁止应用切换等,请使用SetSystemUIMode 而不是 CGDisplayCapture。

    【讨论】:

    • 很高兴找到尼古拉斯!但是,我在传递 SetSystemUIMode 各种属性时遇到了一些麻烦。除了 Cocoa 之外,我是否必须包含另一个库才能正常工作?
    • 是的,SetSystemUIMode 及其常量存在于 HIToolbox.framework(Carbon.framework 的子框架)中。如果你的应用有 Cocoa UI,使用它是没有问题的;你只需要#include .
    • 现在更有意义了。 :) 无论如何,导入 Carbon 框架后,代码现在可以正常工作了。但是,我遇到了一个问题,我认为该类不是为此而创建的。那个问题是我不能禁止用户点击其他窗口(“覆盖”我的代码)。尽管文档说“注意使用这种技术禁用 Dock 只会禁用 Dock,只要调用应用程序位于最前面”,是否有某种方法可以防止这种情况发生?感谢您的帮助。
    • 在你的窗口后面添加一个全屏窗口(具有适当的窗口级别),它拦截鼠标点击并且不对其进行任何操作。
    • 感谢尼古拉斯的建议。虽然我面前没有代码,但这是否也会阻止用户使用 Expose 来切换窗口?我正在尝试重新创建显示捕获效果,除了您建议的方法将允许多个窗口(主窗口、NSAlert 等),这是最有效的方法。感谢您的帮助。
    猜你喜欢
    • 2012-01-19
    • 1970-01-01
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多