2011-02-01 97 views
0

在我的程序中,我有一個包含Web視圖的NSPanel向用戶顯示,讓他們在網頁上進行身份驗證。我想監視用戶是否在驗證完成之前關閉WebView。WebView的窗口關閉時的消息?

我在WebFrameLoadDelegate協議中查找消息,但我似乎無法找到任何消息,當用戶單擊NSPanel的關閉按鈕並僅當用戶單擊關閉按鈕時纔會觸發。

我看了一下子類NSWindowController並重寫了close方法。也許我做錯了,因爲即使我取消了[超級關閉]調用,面板仍然關閉。

那麼,當包含WebView的NSPanel關閉時,執行額外代碼的正確過程是什麼?

回答

0

如果你想從關閉窗口停止用戶,你需要set the window's style mask一個不包括NSCloseableWindowMask。這將禁用窗口的關閉按鈕,以便它只能以編程方式關閉。在最簡單的情況下,你可以做[panel setStyleMask:[panel styleMask]^NSCloseableWindowMask]。另外,如果您想覆蓋窗口的關閉行爲,您需要覆蓋NSWindow的(不是NSWindowController的)close方法,或者在窗口的代理上執行windowShouldClose:。我認爲第二種方式更好。無論如何,-[NSWindowController close]只是一個方便的方法來關閉窗口。這不是窗口關閉時通常會調用的內容。

+0

完美。謝謝! – Aaron 2011-02-01 21:59:13