取消隐藏NSwindow由setHidesOnDeactivate隐藏?

问题描述:

林相当肯定答案一定很容易,但由于某种原因,我不能得到它的工作!取消隐藏NSwindow由setHidesOnDeactivate隐藏?

我有一个窗口,该代码:

[someWindow setHidesOnDeactivate:YES]; 

我有一个状态项,然后将以下代码

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

} 

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

当我点击状态项目时,如何使窗口处于活动状态?

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

闭幕SHOWING闭幕SHOWING

闭先不管,如果窗口被隐藏或不,这是相当有趣的,因为ID猜测isVisible会如果窗口已隐藏,则返回false。总之,我没有窗户。我怎样才能取消隐藏窗口?

谢谢!

我有同样的问题,我无法获得一个窗口后,它是隐藏的停用后重新显示。就我而言,当NSStatusItem被按下时,我显示了一个NSPanel(NSWindow的子类)。

下面的代码终于得到了我的NSPanel重新露面:

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

我敢肯定“activateIgnoringOtherApps”是这里的关键。对我而言,这并不理想,因为它将注意力从用户当前的应用程序中解放出来。

+0

谢谢!奇妙的作品。 – 2011-07-02 21:30:06

+0

'[NSApp unhide];'似乎是'[NSApp activateIgnoringOtherApps:YES]'所调用的关键;',因此您可以安全地替换它。 – gwdp 2013-03-01 03:20:09

+0

对于这个答案,'[NSApp unhideWithoutActivation]'会更合适吗? – sam 2016-07-22 23:48:01