2011-02-01 64 views
15

我期待在所有其他窗口前帶來一個新的NSWindow,但沒有它需要關注。使NSWindow前臺但沒有聚焦

我可以讓它出現在前面,重點針對以下方面:

 
NSApplication *thisApp = [NSApplication sharedApplication]; 
[thisApp activateIgnoringOtherApps:YES]; 

[self makeKeyAndOrderFront:self]; 

如何讓它出現在頂部的任何線索,但無法取得焦點從另一個應用程序了嗎?

回答

15

相反的makeKeyAndOrderFront:,儘量只orderFront:docs

+0

我得到了相同的結果......在「activateIgnoringOtherApps:YES」只是拉焦點從其他應用程序會自動離開。如果我刪除了該代碼,那麼新窗口就出現在其他窗口的後面,這很奇怪,因爲文檔說「orderFront:」應該按照我的要求行事。 – redhotvengeance 2011-02-01 07:38:43

+1

@ilollar也許嘗試[` - (void)orderFrontRegardless`](http://developer.apple.com/library/mac/#documentation/cocoa/Reference/ApplicationKit/Classes/NSWindow_Class/Reference/Reference.html) – cobbal 2011-02-01 14:09:22

6

嘗試是這樣的:

[window setLevel:NSScreenSaverWindowLevel + 1]; 
[window orderFront:nil]; 

這將顯示上述其他應用程序的窗口的窗口,但沒有使它活躍。如果應用程序B是活動的應用程序,則應用程序A中具有正常窗口級別的窗口不能顯示在應用程序B的窗口之前。 (這有很好的理由,順便說一句)。

請謹慎使用此方法。在很多情況下,它可能會違反人機界面準則。如果被濫用,它可能會傾向於讓用戶流失。 (例如,在我剛纔的測試中,窗口似乎直接放在我正好在Safari上看到的位置上,事實上它妨礙了我正在做的事情,但卻對而不是變得大膽讓它變得更加刺激,如果它在我屏幕的一個角落裏出現,它可能會是一個不同的故事)。

4

訂單前臺方法和級別的屏幕保護程序+1不適用於我。 This answer從該-肯尼一樣,雖然:

[yourPanel setLevel:kCGMaximumWindowLevel];