2009-12-25 43 views
7

讓我們說用戶目前在Chrome上。所以我有一個HUD被一個全局熱鍵調用,然後用戶輸入一些東西進入它,然後點擊Close或OK,HUD消失(只是使用[NSPanel orderOut:]),但我的應用程序仍然集中(即菜單我的應用程序欄仍然可見)。但我希望重點回到原始應用程序Chrome。我如何實現這樣的事情?理想情況下,我也可以永遠不會把注意力集中到我的應用程序上,因此,當Chrome仍然是專注的應用程序時,HUD輸入將全部發生。 Things.app設法實現這樣的事情。 Quicksilver也是這樣做的。如何將焦點集中到以前的可可應用程序中?

回答

0

如果這是您的應用程序必須提供的唯一UI,那麼您可以給它一個Info.plist鍵,以防止它進入Dock或作爲活動應用程序。

+0

不,我有一個不同的窗口,當你使用應用程序時顯示出來。那個窗口的行爲就像任何普通的應用程序窗口一樣,所以我不能使用LSUIElement。 – user220582 2009-12-25 03:46:33

+0

爲什麼不呢?這當然看起來像你想要的。 – 2009-12-25 04:12:22

+0

不,我想爲我的應用程序提供一個碼頭圖標。 – user220582 2009-12-25 04:23:08

1

您可以有一個不露面的幫手應用程序爲您做這件事,或者在您提交之前獲取最前面過程的PSN,並在您想離開時切換回它。

+0

如果可能,請儘量避免使用,不易出錯 – cobbal 2009-12-25 04:25:09

7

呼叫[NSApp hide:]

,將隱藏你的應用程序並激活先前激活的應用程序。

+0

如果您的應用程序具有全屏窗口,則這不是真的。 – George 2017-07-22 17:52:32

2

爲了不讓你的NSPanel上的應用程序調用[panel setStyleMask:[panel styleMask] | NSNonactivatingPanelMask];專注於你的NSPanel,或者在Interface Builder的NSPanel上檢查非激活複選框。

相關問題