我使用以下代码加载网页。一切正常,但我想停止 完成加载网页后的网络活动指示器。我们怎么知道呢 网页已完全加载。
任何人都请帮忙。
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];
答案 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];