2014-04-10 46 views
0

我正在使用帶HUD樣式的NSPanel來顯示一些信息。呼叫orderOut後,可可HUD面板再次顯示:

還有的HUD面板,當用戶點擊該按鈕時,我會通過調用打開一個新窗口內的按鈕:

[anotherWindowController showWindow:self]; 
[anotherWindowController.window makeKeyAndOrderFront]; 

而且我想要的面板中消失時,窗口顯示,所以我設置主窗口的代表,並在windowDidResignMain回調中,我打電話給[hudPanel orderOut:nil]

HUD面板確實消失了(我可以看到它),但在它關閉後它重新打開。

我已經檢查了所有可能的orderFront:代碼,並且它們都沒有被調用。所以我的手是真的綁在一起。這是一個系統級別的行爲?任何人都可以引導我通過這個?

編輯:

我忘了提,按鈕駐留在NSPopover。所以,基本上,HUD面板中有一個NSButton。當用戶點擊按鈕時,會出現一個NSPopover,其中有一個按鈕可以調出新窗口。

非常感謝!

回答

0

我有問題。以下解決它:

[NSApp endSheet:yourPanel]; 
[yourPanel orderOut:self]; 
+0

感謝您的快速回復!但它不能解決我的問題。我的問題有點困難,我忘了在提問中提到該按鈕位於NSPopover中。所以,當我點擊一個按鈕時,一個NSPopover出現在彈出窗口中,有一個按鈕可以打開窗口。任何其他想法? –

0

使用

[hudPanel performClose:nil] 

(在斯威夫特我必須使用self代替nil)。使用orderOut時出現彈出問題,使用上述方法解決了問題。

0

請添加後[hudPanel close][hudPanel orderOut:nil]

迅速:hudPanel.close()

從蘋果文檔: 如果窗口是關鍵或主要窗口,立即窗口對象後面它是由它的位置關鍵,主。調用orderOut(_ :)將導致窗口從屏幕上移除,但不會導致它被釋放。有關何時發佈窗口的信息,請參閱close()方法。

有時窗口會在窗口控制器內部邏輯過程中重新出現,我想。當長按鍵盤按鈕殺死窗口時,我遇到了一個問題,但是擊鍵事件只能在分秒之間隱藏它。使用後close一切順利。