取消隐藏由setHidesOnDeactivate隐藏的NSwindow?

Kev*_*vez 2 xcode cocoa objective-c nswindow

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

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

[someWindow setHidesOnDeactivate:YES];
Run Code Online (Sandbox Code Playgroud)

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

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

}
Run Code Online (Sandbox Code Playgroud)

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

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

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

关闭显示关闭显示

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

谢谢!

ben*_*ree 9

我有同样的问题,在隐藏停用之后,我无法重新显示一个窗口.在我的情况下,当按下NSStatusItem时,我正在显示NSPanel(NSWindow的子类).

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

[NSApp arrangeInFront:sender];
[myWindow makeKeyAndOrderFront:sender];
[NSApp activateIgnoringOtherApps:YES];
Run Code Online (Sandbox Code Playgroud)

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