2011-02-01 95 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