WebView窗口关闭时的消息?

时间:2011-02-01 18:59:05

标签: objective-c cocoa

在我的程序中,我有一个NSPanel,其中包含一个Web视图,供用户在网页上进行身份验证。我希望在身份验证完成之前监视用户是否正在关闭WebView。

我在WebFrameLoadDelegate协议中查找了消息,但是当用户单击NSPanel的关闭按钮并且仅当用户单击关闭按钮时,我似乎无法找到任何消息。

我查看了子类化NSWindowController并重写了close方法。也许我做错了,因为即使我删除[超级关闭]电话,面板仍然关闭。

那么,当包含WebView的NSPanel关闭时,执行额外代码的正确程序是什么?

1 个答案:

答案 0 :(得分:0)

如果您想阻止用户关闭窗口,您需要set the window's style mask到不包含NSCloseableWindowMask的用户。这将禁用窗口的关闭按钮,因此只能以编程方式关闭它。在最简单的情况下,您可以[panel setStyleMask:[panel styleMask] ^ NSCloseableWindowMask]

此外,如果要覆盖窗口的关闭行为,您需要覆盖NSWindow(而不是NSWindowController)的close方法,或者在窗口的委托上实现windowShouldClose:。我认为第二种方式更好。无论如何,-[NSWindowController close]只是关闭窗口的便捷方法。它不是窗口关闭时通常调用的内容。