2011-05-29 275 views
3

林相當肯定答案一定很容易,但由於某種原因,我不能得到它的工作!取消隱藏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。總之,我沒有窗戶。我怎樣才能取消隱藏窗口?

謝謝!

回答

8

我有同樣的問題,我無法獲得一個窗口後,它是隱藏的停用後重新顯示。就我而言,當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