UIWebView webViewDidFinishLoad not getting called iOS

余生长醉 提交于 2019-11-30 05:59:27

Hey probably you should do this,

-(void)viewDidLoad {

   //webView alloc and add to view

    CGRect webFrame = [[UIScreen mainScreen] applicationFrame];
    mWebView = [[UIWebView alloc] initWithFrame:webFrame];
    mWebView.delegate = self;
    mWebView.scalesPageToFit = YES;
    [self.view addSubview:mWebView];

    //path of local html file present in documentsDirectory

     NSString *path = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@", pathString]];

    //load file into webView
    [mWebView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:path]] ];

    //show activity indicator
    [self showActivityIndicator]
}

Call removeLoadingView method in the following UIWebViewDelegate methods

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

  [self removeLoadingView];   
   NSLog(@"finish");   
}


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

    [self removeLoadingView];
    NSLog(@"Error for WEBVIEW: %@", [error description]);
}

The showActivityIndicator method

-(void) showActivityIndicator
{
  //Add a UIView in your .h and give it the same property as you have given to your webView. 
  //Also ensure that you synthesize these properties on top of your implementation file

       loadingView = [UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]]
       loadingView.alpha = 0.5;

 //Create and add a spinner to loadingView in the center and animate it. Then add this loadingView to self.View using

    [self.view addSubView:loadingView];
}

The removeLoadingView method

-(void) removeLoadingView
{
   [loadingView removeFromSuperView];
}

Well, does your webview actually finish loading? You should implement the webView:didFailLoadWithError:, too to catch failures.

Since you're not getting either the failure or success message. There might be something wrong with the data that you're trying to load.

Try telling the webView to load an HTML string ("Hello World!"), and see if that succeeds. If it does, then the problem is with your data resource or the path to it.

Prithivi

WebView Delegates

  1. Download MBProgessHUD
  2. Add to your Project
  3. When the page begins load loading (*) progess started and hide after page loaded successfully

.h file

    @interface WebViewViewController : UIViewController <MBProgressHUDDelegate,   UIWebViewDelegate>
   {
     MBProgressHUD *HUD;

   }

.m File

- (void)webViewDidStartLoad:(UIWebView *)webView
{
HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view];
[self.navigationController.view addSubview:HUD];

HUD.delegate = self;
HUD.labelText = @"Loading";
[HUD show:YES];
}

-(void)webViewDidFinishLoad:(UIWebView *)webView
{
     [HUD hide:YES];
}

Probably it is experiencing an error. Implement –webView:didFailLoadWithError: and check.

Make sure to implement the delegate ( ) in the view's .h file and connect the delegate to the view. This fixed it for me.

.h file

@property (retain, nonatomic) IBOutlet UIWebView *webview;

.m file

 -(void)viewDidLoad {
   NSString *urlAddress = @"YOUR_URL";
   _webview.scalesPageToFit = YES;

 //Create a URL object.
   NSURL *url = [NSURL URLWithString:urlAddress];

 //URL Requst Object
   NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];

 //Load the request in the UIWebView.
   [_webview loadRequest:requestObj];
}
- (void)webViewDidStartLoad:(UIWebView *)webView;
{
    [self.indicater_web startAnimating];
}
//a web view starts loading
- (void)webViewDidFinishLoad:(UIWebView *)webView;
{
    [self.indicater_web stopAnimating];
}
//web view finishes loading
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;
{
    [self.indicater_web stopAnimating];
}
- (BOOL)webView:(UIWebView *)wv shouldStartLoadWithRequest:(NSURLRequest *)rq
{
    [self.indicater_web startAnimating];
    return YES;
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!