Macos _blocksActionWhenModal可可专用方法的替代方案?

Macos _blocksActionWhenModal可可专用方法的替代方案?,macos,cocoa,Macos,Cocoa,我们的OSX应用程序有时会显示模态表单,模态表单的一个缺点是,当模态表单可见时,菜单项不起作用。您可以按正常方式单击菜单项,但不会在目标上调用选择器 这是不好的,因为即使有一个模态表单显示,我们希望用户能够命令-q退出应用程序,这对于OSX上的应用程序来说是正常的 但是,有一个未记录的方法_blocksActionWhenModal默认返回YES。如果您重写它以返回NO,您的菜单项将在模态窗体上正常工作,这意味着一切都可以正确处理 我想找到一种替代方法,因为我不想使用这样一种未记录的方法(因为苹

我们的OSX应用程序有时会显示模态表单,模态表单的一个缺点是,当模态表单可见时,菜单项不起作用。您可以按正常方式单击菜单项,但不会在目标上调用选择器

这是不好的,因为即使有一个模态表单显示,我们希望用户能够命令-q退出应用程序,这对于OSX上的应用程序来说是正常的

但是,有一个未记录的方法_blocksActionWhenModal默认返回YES。如果您重写它以返回NO,您的菜单项将在模态窗体上正常工作,这意味着一切都可以正确处理


我想找到一种替代方法,因为我不想使用这样一种未记录的方法(因为苹果可能会用新的操作系统版本来改变它)。有没有其他方法可以达到同样的效果?“不使用模式表单”不是一个真正的选项。

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

对于10.6+,在模式窗口上使用
[NSWindow setPreventsApplicationTerminationWhenModal:][/code>如何显示模式表单?它是应用程序模式还是窗口模式(你应该尽可能避免应用程序模式;它们是难以置信的…模式)。显示此模式时,“退出”是您唯一想要的吗?95%的时间我们的应用程序只显示一个窗口。是的,除了“编辑”菜单上的内容(已经正常工作)之外,当显示模式窗口时,退出是我唯一想做的事情。(其他东西也可以使用,但不是必需的。)但它是应用程序模式还是窗口模式?这是完全不同的。您使用什么方法表示此模式?我们使用的是NSApplication runModalForWindow:,我假设它使其成为应用程序模式。请确保尽可能使用工作表而不是模式窗口。您如何表示模式表单?它是应用程序模式还是窗口模式(你应该尽可能避免应用程序模式;它们是难以置信的…模式)。显示此模式时,“退出”是您唯一想要的吗?95%的时间我们的应用程序只显示一个窗口。是的,除了“编辑”菜单上的内容(已经正常工作)之外,当显示模式窗口时,退出是我唯一想做的事情。(其他东西也可以使用,但不是必需的。)但它是应用程序模式还是窗口模式?这是完全不同的。您使用什么方法来表示此模式?我们使用的是NSApplication runModalForWindow:,我假设它使其成为应用程序模式。请确保尽可能使用工作表而不是模式窗口。