4

好的,尽管看起来很简单和愚蠢,但这是我的场景:

  • 应用程序窗口(只有一个主窗口)被最小化
  • 用户单击停靠菜单上的某些内容
  • 我们想把那个主窗口带回来

简单的?

不完全的。

我尝试通过以下方式访问我的主窗口:

  • [[NSApplication sharedApplication] mainWindow]
  • [[NSApplication sharedApplication] windows]

然后发送一条makeKeyAndOrderFront:消息,但它根本没有出现。

我什至尝试过显示所有窗口(是的,它仍然认为我正在使用的“窗口”一两个(隐藏)表......),但仍然没有。

你能建议一种方法吗,我终于可以展示那个窗口,而不必在任何地方设置一个插座?

我不知道; 我可能太累了,没注意到,但这件事几乎是伤脑筋的……

4

1 回答 1

11

您可以像这样取消最小化窗口:

if([aWindow isMiniaturized])
{
   [aWindow deminiaturize:self];
}

但是,问题是窗口在最小化时会失去主要状态,因此您需要一些其他方法来识别窗口。

为什么不能只使用插座?

您可以让应用程序取消最小化所有最小化的窗口,如下所示:

for(NSWindow* win in [NSApp windows])
{
    if([win isMiniaturized])
    {
        [win deminiaturize:self];
    }
}

当应用程序启动时,您可以存储对主窗口的引用并注册NSWindowDidMiniaturizeNotification. 这将告诉您主窗口何时最小化,这也可能对您有所帮助。

于 2012-04-19T10:34:54.680 回答