【问题标题】:Bring NSRunAlertPanel Dialogue to Front in Background Process在后台进程中将 NSRunAlertPanel 对话置于最前面
【发布时间】:2010-05-05 18:34:29
【问题描述】:

如果你打电话

NSRunAlertPanel()

在 Cocoa 的后台进程中,对话不会出现在前面,而是停留在其他窗口的后面。这个post 表明,如果将进程转换为前台进程,则可以将对话置于最前面。但是,如果您将进程保持为后台进程,是否有任何方法可以实现此行为?

【问题讨论】:

    标签: cocoa nsalert


    【解决方案1】:

    你想做什么?后台进程在不使用TransformProcessType的情况下仍然可以显示UI并将自己带到最前面;只需确保您是 LSUIElement,而不是 LSBackgroundOnly(或已弃用的 NS* 等价物)。您通常需要使用 TransformProcessType 的唯一原因是您需要 Dock 图标或菜单栏。

    【讨论】:

    • 我有一个程序正在运行,它在菜单栏中有一个存在。当程序开始运行时,我希望它弹出一个对话框,询问用户是否要将程序设置为在启动时运行。现在调用NSRunAlertPanel() 会出现对话,但通常隐藏在其他窗口后面。如何让我的程序仅在菜单栏出现的情况下运行,但让对话框出现在所有窗口的前面?
    • 这时你需要把你的应用放到最前面:[NSApp activateIgnoringOtherApps: YES];
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-28
    • 1970-01-01
    • 2012-11-03
    相关资源
    最近更新 更多