2012-03-07 36 views
0

我们的OS X应用程序有时会显示模态窗体,而模态窗体的缺点之一是,当模态窗体可见时,菜单项不起作用。您可以按照正常方式单击该菜单项,但目标上不会调用选择器。_blocksActionWhenModal Cocoa私有方法的替代品?

这是不好的,因为即使有一个模式的形式表现,我们希望用户能够命令q退出应用程序,因为是正常的,在OS X上的哪些应用

然而,未记录的方法_blocksActionWhenModal默认返回YES。如果您将其覆盖为返回NO,则菜单项在模式窗体上开始正常工作,这意味着所有内容都可以正确处理。

我想找到一个替代方案,因为我不想使用像这样的未公开的方法(因为Apple可以通过新的操作系统版本更改它)。在这里有另一种达到相同结果的方式吗? “不使用模态形式”并不是真正的选择。

+0

你如何呈现模态形式?它是应用程序模式还是窗口模式(尽可能避免使用应用程序模式;它们令人难以置信...模式)。显示此模式时,“退出”是您想要的唯一一件事情吗? – 2012-03-07 16:04:37

+0

95%的时间我们的应用程序只显示一个窗口。是的,除了编辑菜单上的东西(它们已经正常工作)之外,在模态窗口显示时,Quit是我想要工作的唯一东西。 (其他东西工作的选项也会很好,但不是必需的。) – Colen 2012-03-07 16:10:50

+0

但它是应用程序模式还是窗口模式?这些完全不同。你用什么方法来呈现这种模态? – 2012-03-07 16:48:55

回答

4

对于10.6+,在模式窗口上使用[NSWindow setPreventsApplicationTerminationWhenModal:]以允许退出。