取消隐藏由setHidesOnDeactivate隐藏的NSwindow?

时间:2011-05-29 00:38:51

标签: objective-c xcode cocoa nswindow

我很确定答案一定很容易,但由于某些原因我不能让它起作用!

我有一个窗口,这段代码:

[someWindow setHidesOnDeactivate:YES];

我有一个状态项,以及以下代码

- (void)openWindow{
   if ([someWindow isVisible]) {
         NSLog(@"CLOSING");
         [lyricWindow close];
   }else {
          [someWindow makeKeyAndOrderFront:nil];
         NSLog(@"SHOWING");
   }

}

当我关闭窗口并想再次打开它时,这个工作正常。既然我已经实现了停用的隐藏,我就失去了我需要做的事情!我已经尝试了各种各样的事情......我希望窗口再次显示,并且当我单击状态项时窗口变为活动状态!我认为这就是我的问题。

单击状态项时,如何激活窗口?

我在日志中得到以下内容:

  

关闭显示关闭显示

无论窗口是否隐藏,关闭都是第一个,这是相当有趣的,因为如果窗口被隐藏,则id guess isVisible将返回false。无论如何,我没有窗户。我该如何取消隐藏窗户?

谢谢!

1 个答案:

答案 0 :(得分:9)

我遇到了同样的问题,因为在隐藏停用后我无法重新显示窗口。就我而言,当我按下NSStatusItem时,我正在显示NSPanel(NSWindow的子类)。

以下代码最终让我的NSPanel重新显示:

[NSApp arrangeInFront:sender];
[myWindow makeKeyAndOrderFront:sender];
[NSApp activateIgnoringOtherApps:YES];

我很确定'activateIgnoringOtherApps'是关键所在。对我而言,它并不理想,因为它将焦点从用户当前的应用程序中移开。