2

我刚开始使用 Xcode,我正在尝试制作一个 OS X 网络浏览器。

我想知道我的 webview 什么时候加载,什么时候不加载。我已经从这里和 Apple Developer Library 中查看了很多页面,这就是我得到的:

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

当然我也看到了webViewDidFinishLoad void,但是当我尝试这个时,我AppDelegate.m什么也没发生。我已将 webview 连接frameLoadDelegate到 App Delegate,据我所知,我还需要使用文件<>中的协议AppDelegate.h。我的问题是,当我输入webFrameLoadDelegateProtocols<>时,它告诉我它webFrameLoadDelegateProtocol不存在。

4

2 回答 2

10

这似乎是因为您尚未设置 webView 委托。不过,您不需要将协议添加到您的标头中。相反,您需要在某处添加此代码,我建议在 applicationDidFinishLaunching

[webView setFrameLoadDelegate:self];

然后你可以覆盖这些方法。如果这不起作用,请确保您已将 webView 从标头连接到 IB 中的 webView。另外一定要在.m.

最后,您可以将我的开源示例用于 OS X 浏览器。它在 MIT 许可下,因此您可以自由使用它。

https://github.com/JosiahOne/basic_cocoa_web_browser

编辑

我刚刚意识到,您对 Cocoa 使用了错误的方法。请改用这些方法。

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

-(void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
{
    //Did finish Load
}
于 2012-12-29T20:10:41.087 回答
4

我的问题是,当我在“<>”中输入“webFrameLoadDelegateProtocol”时,它告诉我“webFrameLoadDelegateProtocol”不存在。

WebFrameLoadDelegate协议是一种非正式协议。它没有资格以同样的方式被收养。<webFrameLoadDelegateProtocol>从你的班级中省略@interface

当我在我的 AppDelegate.m 中尝试这个时,什么也没有发生。我已将 webview 的 frameLoadDelegate 连接到 App Delegate

什么时候将 Web 视图的frameLoadDelegate属性设置为您的应用程序委托?

于 2012-12-29T19:26:52.107 回答