为什么webFrameLoadDelegate协议不起作用?

bif*_*sbq 2 macos delegates protocols objective-c webview

我刚开始在Xcode,我正在尝试制作OS X Web浏览器.

我想知道我的webview何时加载,何时不加载.我已经看过很多来自这里和Apple Developer Library的页面了,这就是我得到的:

- (void)webViewDidStartLoad:(WebView *)webView {
    //enter code here  
}
Run Code Online (Sandbox Code Playgroud)

当然,我也看到了webViewDidFinishLoad void,但是当我尝试这一点时,AppDelegate.m没有任何事情发生.我已将webview连接frameLoadDelegate到App Delegate,根据我的理解,我还需要使用文件中的<>协议AppDelegate.h.我的问题是,当我输入webFrameLoadDelegateProtocol<>的IT告诉我webFrameLoadDelegateProtocol不存在.

Jos*_*iah 10

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

[webView setFrameLoadDelegate:self];
Run Code Online (Sandbox Code Playgroud)

然后你可以覆盖这些方法.如果这不起作用,那么请确保已将webView从标题连接到IB中的webView.还要确保合成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
}
Run Code Online (Sandbox Code Playgroud)

  • 好吧,我的意思是我的答案,因为虽然Nate很有帮助,但他并没有解决问题.无论如何,很高兴你解决了这个问题.:) (3认同)