2013-02-05 38 views
1

我已經將我的WebView UIDelegate鏈接到BrowserWindowController的界面構建器中,這是我的委託實現了webuidelegate函數。在我browserwindowcontroller類,我也做:pyobjc webuidelegate函數不叫

類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的部分無,被調用。我什至嘗試過(什麼是正式的協議,即使這是非正式的): BrowserWindowController類(NSWindowController,WebKit.protocols.WebUIDelegate):

但這並不奏效。我已經以同樣的方式實現了WebView WebPolicyDelegate,並且它工作正常。爲什麼WebUIDelegate沒有工作?我已經按照我在文檔中閱讀的方式將它鏈接起來。我是否錯過了這個非正式的協議?

+0

你知道如何解決這個問題嗎?我面臨同樣的問題。 –

回答

0

根據Apple的文檔(1),委託協議沒有名爲webviewDidStartLoad的選擇器:選擇器是「UIWebViewDelegate」協議,但在iOS上使用,而不是在OSX上使用。

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

+0

謝謝。即使如此,我實現了所有的webuidelegate函數,並且它們都不處理window.open(url,「_blank」)的按鈕單擊,其中url是必須打開的文件。沒有事件發送,同樣的按鈕點擊將打開http://www.google.com,但它不會打開我的文件的網址。有任何想法嗎?我已經實施了policydelegate,並且它沒有響應open。 – user1874246

+0

WebPolicyDelegate應該做到這一點: