在我的程序中,我有一个NSPanel,其中包含一个Web视图,供用户在网页上进行身份验证。我希望在身份验证完成之前监视用户是否正在关闭WebView。
我在WebFrameLoadDelegate协议中查找了消息,但是当用户单击NSPanel的关闭按钮并且仅当用户单击关闭按钮时,我似乎无法找到任何消息。
我查看了子类化NSWindowController并重写了close方法。也许我做错了,因为即使我删除[超级关闭]电话,面板仍然关闭。
那么,当包含WebView的NSPanel关闭时,执行额外代码的正确程序是什么?
答案 0 :(得分:0)
如果您想阻止用户关闭窗口,您需要set the window's style mask到不包含NSCloseableWindowMask的用户。这将禁用窗口的关闭按钮,因此只能以编程方式关闭它。在最简单的情况下,您可以[panel setStyleMask:[panel styleMask] ^ NSCloseableWindowMask]
。
此外,如果要覆盖窗口的关闭行为,您需要覆盖NSWindow(而不是NSWindowController)的close
方法,或者在窗口的委托上实现windowShouldClose:
。我认为第二种方式更好。无论如何,-[NSWindowController close]
只是关闭窗口的便捷方法。它不是窗口关闭时通常调用的内容。