停止网络活动指标

时间:2010-04-09 00:18:15

标签: iphone objective-c cocoa-touch xcode

我使用以下代码加载网页。一切正常,但我想停止 完成加载网页后的网络活动指示器。我们怎么知道呢 网页已完全加载。

任何人都请帮忙。

UIApplication* app = [UIApplication sharedApplication];
 app.networkActivityIndicatorVisible = YES; // to stop it, set this to NO

 NSURL *url = [NSURL URLWithString:@"http://www.google.com"];
 NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [webView loadRequest:request];

4 个答案:

答案 0 :(得分:6)

最简单的方法是在实例化UIWebView后添加此行。

[webView setDelegate:self];

现在您将调用webViewDidFinishLoad:,整个方法应如下所示。

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
}

我将进一步解释这一点,因为您将来绝对需要了解授权。

UIWebView只是一个显示Web数据的对象。它并不喜欢处理所有这些其他东西,因为它真的很喜欢网络数据。现在,在您的情况下,您想要了解UIWebView何时完成其最喜欢的小任务。要做到这一点,你的UIWebView给它的代表提供了一个大喊,比如“Yo holmes,我现在已经完成了加载这些数据。所以你可以做任何你现在做的事情。”并且你的UIWebView继续它的快乐方式。

所以我们所做的就是通过将webView上的delgate属性设置为self来告诉UIWebView它的委托,在本例中是我们当前的类。

从那里你可以调用UIWebView委托可用的任何方法(它在文档中的所有方法)并让它们执行UIWebView主要目的之后的任务。

有意义吗?

答案 1 :(得分:3)

您只需要将webView.delegate设置为指向某个对象,并让该对象实现webViewDidFinishLoad:

答案 2 :(得分:0)

这是我用来停止活动指示器的内容:

- (void)viewDidLoad 
{               
    [super viewDidLoad];

    NSString *urlAddress = [NSString stringWithFormat:@"http://www.wikipedia.com/wiki/%@", place.name];                                                     
    NSURL *url= [NSURL URLWithString: [urlAddress stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];

    [webView loadRequest:requestObj];

    [[self webView] setDelegate:self];

}

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    [activityIndicator stopAnimating];
}

- (void) webViewDidStartLoad:(UIWebView *)webView {
    [activityIndicator startAnimating];
}

答案 3 :(得分:0)

在UIWebView加载请求时使用以下代码显示网络指示符

#pragma mark - UIWebViewDelegate

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    return YES;
}
//For Showing NetWork Indicator in Webview
- (void)webViewDidStartLoad:(UIWebView *)webView
{
    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}

注意: UIViewController<UIWebViewDelegate>[webView setDelegate:self];