在Cocoa中,是否可以仅以特定于另一个窗口的方式呈现一个窗口模式作为窗口(不作为工作表)?特别是,我想提出一个警告,阻止用户只与它通知用户的窗口进行交互(当然用户已经处理过 - 关闭 - 警报)。当用户被阻止与呼叫中指定的窗口交互以呈现警报时,她能够继续与其他窗口交互。我将重申:在这种情况下,将警报显示为表格不是一个可接受的解决方案。
答案 0 :(得分:1)
表格是制作一个窗口模式相对于另一个窗口模式的标准方法 - 特别是对于警报 - 因此Apple不提供方便的API来执行此操作。问问自己:
如果你真的想在没有使用工作表API的情况下为另一个制作窗口模态,那么实现它只是考虑“窗口模态”意味着什么...它似乎你已经完成了:
...阻止用户仅与窗口进行交互的警报...
因此,您真正需要做的是阻止用户与该窗口进行交互。有很多方法可以做到这一点,包括:
NSApplication
并覆盖sendEvent:
以忽略窗口中的事件(这实在是太过分了,可能会出现问题)除此之外,您可能希望将警报附加到窗口,以便它们一起移动并且不会在Exposé中做出奇怪的事情:请参阅-[NSWindow addChildWindow:ordered:]
。