2010-05-12 23 views
13

我嘗試使用下面的代碼打開一個NSWindow:如何打開NSWindow並選擇並關注窗口?

NSWindowController *window = [[NSWindowController alloc] initWithWindowNibName:@"MainWindow"]; 
[window showWindow:nil]; 

的窗口打開不錯,但前一個窗口仍然是主窗口和焦點。我試過下面的代碼來強制主窗口,它不起作用。窗口仍然有殘疾標題欄和不接受的關鍵事件等

[self.window makeKeyAndOrderFront:self]; 
[self.window makeMainWindow]; 

我似乎能夠得到一個窗口失去焦點的唯一方法是,如果我調用的ShowWindow後關閉窗口:與[[NSApp mainWindow]關閉];

任何想法?

+4

不知道爲什麼我在這裏收到-1,有人讓我知道我該如何改進這個問題? – Luke 2010-05-14 02:33:56

回答

13

makeKeyAndOrderFront:是要走的路。你確定self.windowwindow引用同一個對象嗎?

+0

謝謝,但它仍然無法正常工作。我添加了[窗口makeKeyAndOrderFront:self];在showWindow之後直接調用:它仍然不起作用。我應該在別的地方叫這個嗎? – Luke 2010-05-12 10:39:25

+0

'makeKeyAndOrderFront:'是正確的方法。它不應該在你稱之爲的地方。還有其他問題。例如,主窗口可能是模態的,或者有什麼東西拒絕放棄第一響應者的狀態。 – 2010-05-12 12:05:55

+1

是的,筆尖內有問題,請參閱我的解答答案。 – Luke 2010-05-12 15:25:42

8

我通過將WindowController分配給nib文件所有者來解決該問題,而不是在nib中具有單獨的NSWindowController對象。

+0

我想補充一點,我忘了在Interface Builder中將窗口連接到我的NSWindow。這導致代碼不適合我,所以任何讀這個的人都不要忘記連接窗口。一個簡單的錯誤,但一個可以讓你失望的年齡大聲笑 – Supertecnoboff 2017-06-27 20:44:06

相關問題