2012-07-31 119 views
0

这种方法有什么问题?WebView完成启动不起作用

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

我想停止循环进度指示器(activityIndicator)。但- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame有什么问题。我为mac osx编码,而不是iOS。我从代表处听到了什么,这是什么意思?

+0

问题是什么?该方法没有被调用? – bejonbee 2012-07-31 22:28:15

回答

1

检查以确保您的UIWebView已设置其委托。设置一个委托基本上是告诉程序你想处理事件的人(比如轻敲,手势,或者在这种情况下,加载一个webView)。因此,当事件被触发时,它会通知代表,代表可以处理它。也许如果你发布更多的代码会有帮助,但我会检查你的UIWebView的声明。要确保你给它分配和初始化后,您的委托设置为self(假设该方法是在同一个班),像这样:

UIWebView *myWebView = [[UIWebView alloc] init]; 
[myWebView setDelegate:self]; 

如果您还没有设置委托,这是射击没有人接受他们来处理他们。您正在使用的方法正在等待任何webView发送的特定事件。当它发送一个事件消息时,它将作为参数传递触发的webView。无论如何,请输入日志声明以确保您正在输入方法。这会告诉你它是否收到事件消息。

- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame { 
    NSLog(@"Did finish loading..."); 
    [activityIndicator stopAnimation:self]; 
} 

注意:这是按照iOS的经验,但也应该适用于Mac OS。让我知道你的日志结果是什么,如果该方法被调用或不。

+0

对于Mac OS X,它被称为'WebView'(而不是'UIWebView'),并且所讨论的委托是框架加载委托,因此'[myWebView setFrameLoadDelegate:self]'。这是这里的主要区别。 – Vervious 2012-08-01 01:07:19

+2

正如我最近发现的,webView:didFinishLoadForFrame:在OS X上被称为早期调用,即使确保frame参数是主框架:在文档边界是正确的之前,有人说在DOM完成之前建立。而是观察WebView的进度通知WebViewProgressStartedNotification WebViewProgressEstimateChangedNotification和WebViewProgressFinishedNotification。 – 2012-08-25 22:25:12