2012-12-29 65 views
2

我剛剛開始在Xcode,我試圖製作一個OS X的Web瀏覽器。爲什麼webFrameLoadDelegate協議不起作用?

我想弄清楚我的webview何時加載以及何時不加載。我已經看了很多都從這裏開始並在此Apple開發庫頁,這是我所得到的:

- (void)webViewDidStartLoad:(WebView *)webView { 
    //enter code here 
} 

當然,我也看到了webViewDidFinishLoadvoid,但是當我嘗試這在我的AppDelegate.m沒有任何反應。我已將webview的frameLoadDelegate連接到App Delegate,並且從我的理解中,我還需要在AppDelegate.h文件中使用<>協議。我的問題是,當我輸入webFrameLoadDelegateProtocol<> s告訴我webFrameLoadDelegateProtocol不存在。

回答

4

我的問題是,當我輸入「webFrameLoadDelegateProtocol」變成了「<>」 S它告訴我,「webFrameLoadDelegateProtocol」不存在。

WebFrameLoadDelegate Protocolinformal protocol。它沒有資格以相同的方式通過。從班級的@interface中省略<webFrameLoadDelegateProtocol>

當我嘗試在我的AppDelegate.m中沒有任何反應。我已連接的WebView frameLoadDelegate到App代表

當你設置Web視圖的frameLoadDelegate屬性爲您的應用程序代理?

+0

然後我用哪個協議訪問webview的加載? – biffletsbq

+0

使用非正式協議。您不需要(也不能)將您的類聲明爲採用WebFrameLoadDelegateProtocol。 –

+0

@ user1936689查看我的編輯。這聽起來像你可能沒有正確設置你的web視圖的frameLoadDelegate屬性...... –

10

這似乎是因爲你還沒有設置webView委託。你不需要將協議添加到你的頭部。相反,您需要在某處添加此代碼,我建議在applicationDidFinishLaunching

[webView setFrameLoadDelegate:self]; 

然後您可以重寫這些方法。如果這不起作用,那麼請確保您已將您的webView從標題連接到IB中的webView。另外請確保在.m中合成webView。

最後,您可以將我的開源示例用於OS X瀏覽器。它是在MIT的許可下,所以你可以自由使用它。

https://github.com/JosiahOne/basic_cocoa_web_browser

編輯

我才意識到,你正在使用可可錯誤的方法。改用這些方法。

-(void)webView:(WebView *)sender didStartProvisionalLoadForFrame:(WebFrame *)frame 
{ 
    //Did start Load 
} 

-(void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame 
{ 
    //Did finish Load 
} 
+0

我用我的webview的名稱替換「webView」? – biffletsbq

+0

只有這部分:[webView setFrameLoadDelegate:self]。我相信這個方法很好。 – Josiah

+0

謝謝。這非常有幫助。 – biffletsbq