インターフェイス ビルダーで WebView UIDelegate を BrowserWindowController にリンクしました。これは、webuidelegate 関数を実装するデリゲートです。私の browserwindowcontroller クラスでは、次のことも行います。
クラス BrowserWindowController(NSWindowController):
webView = objc.IBOutlet()
def windowDidLoad(self):
self.webView.setUIDelegate_(self)
def webViewDidStartLoad_(self, webView):
print "DID LOAD START"
def webView_didFailLoadWithError_(self, webView, error):
print "ERROR"
def webViewDidFinishLoad_(self, webView):
print "DID FINISH LOAD"
def webView_shouldStartLoadWithRequest_navigationType_(self, webView, request, nav_type):
print "LOAD REQ"
WebUIDelegate の一部である最後の 4 つの関数はいずれも呼び出されません。私もやってみました(これは非公式ですが、正式なプロトコルのためのものです): class BrowserWindowController(NSWindowController, WebKit.protocols.WebUIDelegate):
しかし、それはうまくいきません。同じ方法で WebView WebPolicyDelegate を実装しましたが、機能します。WebUIDelegate が機能しないのはなぜですか? ドキュメントで読んだ方法でリンクしました。この非公式の議定書に欠けているものはありますか?