4

看起来这应该很简单,但我对 Objective-C 还是很陌生。我想要做的只是在我的 WebView 加载时启动和停止微调器。这是一个 OS X 应用程序。我搜索的所有内容都是 Cocoa Touch,我只使用 Cocoa。在我的 AppDelegate.m 中,我必须使用启动和停止微调器的方法(这确实有效,我对其进行了测试)。

-(IBAction)goSpin:(id)sender
{
    [spinner startAnimation:self];
}

-(IBAction)stopSpin:(id)sender
{
    [spinner stopAnimation:self];
}

我也有两个用于 webView 的委托方法,我覆盖了它们。

-(void)webView:(WebView *)sender didStartProvisionalLoadForFrame:(WebFrame *)frame
{
    [self goSpin:self];
}

-(void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
{
    [self stopSpin:self];
}

基本上,我想知道如何让我的 webView 设置它的委托。通常我必须在 .h 文件中做一些事情,但我找不到任何列出适用于此的 webKit 委托的参考。任何帮助,将不胜感激。

4

2 回答 2

9

-(void)webView:(WebView *)sender didStartProvisionalLoadForFrame:(WebFrame *)frame

-(void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame

方法是WebFrameLoadDelegate 协议的一部分。

WebView有一个frameLoadDelegate属性。通过调用将其设置在您的WebView实例上[webView setFrameLoadDelegate:delegate],其中delegate是实现这两种方法的 NSObject(self在此处创建 frameLoadDelegate 对您来说是最简单的)。由于 WebFrameLoadDelegate 是一个非正式协议,delegate因此应在其 .h 文件中声明这两个方法,而不是<WebFrameLoadDelegate>像使用正式协议那样添加到其类声明中。

于 2012-11-17T10:28:08.177 回答
-3

您可以覆盖这些 webview 委托方法来启动和停止微调器。

- (void)webViewDidStartLoad:(UIWebView *)webView{

// In this method you have to start a spinner.

}
- (void)webViewDidFinishLoad:(UIWebView *)webView{

   // In this method you have to stop the current  spinner.


}
 - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{

      // In this method you have to stop the current  spinner.


 }
于 2012-10-01T19:44:16.003 回答