我正在處理基於文檔的Cocoa應用程序。在啓動時,用戶將看到一個「歡迎面板」(類型爲NSPanel
),並帶有用於「創建新文檔」和「打開現有文檔」等常用操作的按鈕。這些操作分別鏈接到第一響應者的newDocument:
和openDocument:
操作,就像文件菜單中的匹配項目一樣。如何在創建或打開新文檔時關閉NSPanel?
一切正常......有三個注意事項:
- 歡迎面板創建或打開一個新的文檔時沒有被駁回。
- 文檔窗口在創建時沒有焦點。
- 打開文檔窗口沒有窗口標題欄中顯示的打開文件;同樣,新文檔窗口也不會像預期的那樣使用「無標題」,「無標題2」,「無標題3」等標題創建。 (我不只是因爲這很煩人提這個,而是因爲它可能會產生一些洞察到什麼錯誤。)
我已經部分地通過使我的應用程序控制器的歡迎面板的委託解決#1。當單擊「打開現有文檔」按鈕時,面板會退出其按鍵狀態(因爲正在打開文件瀏覽器對話框),所以我可以在代理人的windowDidResignKey:
方法中關閉面板。但是,我無法弄清楚如何在創建新文檔時關閉面板,因爲在創建新文檔時找不到發佈的通知或調用的委託方法。最終,#2仍然是一個問題,因爲文檔窗口在創建時無法獲得焦點。
我只有子類NSDocument
- 我沒有使用自定義文檔或窗口控制器。我也嘗試將面板更改爲NSWindow
,認爲NSWindow
可能會有不同的行爲,但同樣的問題正在發生。
其他人可能會回答這個問題,但如果您可以創建併發布示例問題示例應用程序,它將會(並始終)有用。 – ericg 2010-05-13 15:41:49
我會的,但我不認爲代碼本身是相關的。接口的相關部分是一個nib(所以沒有代碼),應用程序利用Cocoa的文檔框架來完成它的工作,所以應用程序本身的代碼相對較少。 – mipadi 2010-05-13 17:13:43