4

So I have a view containing a web view with HTML content. This is my code to display it :

NSURL *url = [NSURL URLWithString:urlWeb];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[vue loadRequest:request];
vue.scalesPageToFit = YES;

This works well. But of course there is a little latency before the HTML content is displayed, and I want to display a UIActivityIndicator at this moment.

I know that I must use :

[myActivityIndicator startAnimating];
[myActivityIndicator stopAnimating];

The only thing I miss is how to know when the HTML content is completely loaded ?

Thanks for your advices !

Damian Nils
  • 81
  • 1
  • 10

3 Answers3

12

There is a Protocol that you can implement to know that, UIWebViewDelegate. If you implement the method webViewDidFinishLoad you can know when the content are completely loaded:

Here is your code:

[activityIndicator startAnimating];

NSURL *url = [NSURL URLWithString:urlWeb];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[vue loadRequest:request];
vue.scalesPageToFit = YES;

And here is the protocol methods

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

Remember to set your class as a delegate of the UIWebView before load the request.

Marco Pace
  • 3,820
  • 19
  • 38
3

In UIWebViewDelegate method,

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    [myActivityIndicator stopAnimating];
    //myActivityIndicator.hidden = YES;
}
xda1001
  • 2,449
  • 16
  • 18
2

You can use the didFinishLoading method of the UIWebView delegate. More info here: UIWebView finished loading Event and, of course, on apple http://developer.apple.com/library/ios/documentation/uikit/reference/UIWebViewDelegate_Protocol/Reference/Reference.html

Community
  • 1
  • 1
BBog
  • 3,630
  • 5
  • 33
  • 64