1

我已将我的 WebView UIDelegate 链接到界面构建器中的 BrowserWindowController,这是我实现 webidelegate 功能的委托。在我的 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 一部分的最后四个函数都没有被调用。我什至尝试过(什么是正式协议,即使这是非正式的):class BrowserWindowController(NSWindowController, WebKit.protocols.WebUIDelegate):

但这不起作用。我已经以相同的方式实现了 WebView WebPolicyDelegate 并且它确实有效。为什么 WebUIDelegate 不起作用?我已经按照我在文档中阅读的方式链接了它。我错过了这个非正式协议的东西吗?

4

1 回答 1

0

根据 Apple 的文档 (1),委托协议没有名为 webviewDidStartLoad: 的选择器。选择器是“UIWebViewDelegate”协议,但它用于 iOS,而不是 OSX。

1: https ://developer.apple.com/library/mac/#documentation/Cocoa/Reference/WebKit/Protocols/WebUIDelegate_Protocol/Reference/Reference.html

于 2013-02-06T07:38:10.950 回答