it-swarm.com.de

UIWebView webViewDidFinishLoad wird nicht als iOS bezeichnet

Ich lade eine Datei aus dem Dokumentenverzeichnis mit UIWebView. Ich habe den Delegierten von UIWebView festgelegt und antworte auf 2 Delegatmethoden, nämlich webViewDidStartLoad und webViewDidFinishLoad. Ich erhalte die webViewDidStartLoad. Ich erhalte jedoch keine webViewDidFinishLoad-Methode.

Unten ist der Code:

@interface MyView: UIViewController <UIWebViewDelegate> {
           UIWebView *webView;
}

@property (nonatomic, retain) UIWebView *webView;

========================= Class ===========================

-(void)viewDidLoad {
    CGRect webFrame = [[UIScreen mainScreen] applicationFrame];
    mWebView = [[UIWebView alloc] initWithFrame:webFrame];
    mWebView.delegate = self;
    mWebView.scalesPageToFit = YES;
    [self.view addSubview:mWebView];
        NSString *path = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@", pathString]];

    [mWebView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:path]] ];
}

// Delegate methods

-(void)webViewDidStartLoad:(UIWebView *)webView {
    NSLog(@"start");    
}   

-(void)webViewDidFinishLoad:(UIWebView *)webView {
    NSLog(@"finish");   
}


-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
    NSLog(@"Error for WEBVIEW: %@", [error description]);
}

Bitte lassen Sie mich wissen, was falsch läuft. Ich erhalte keine Fehlermeldung in der Delegatenmethode didFailLoadWithError.

Note: - Die Datei, die ich lade, ist riesig, sagen wir 3 MB. 

Vielen Dank 

============== EDITED ===================

Da ich sehr große Dateien lud, kam der Delegierte nach sehr langer Zeit, die ich nicht bemerken konnte, aber für kleine Dateien funktioniert alles einwandfrei

25
Ekra

Hey, wahrscheinlich solltest du das tun,

-(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]
}

Rufen Sie die removeLoadingView-Methode in den folgenden UIWebViewDelegate-Methoden auf

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

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


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

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

Die showActivityIndicator-Methode

-(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];
}

Die removeLoadingView-Methode

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

Ist Ihr Webview tatsächlich fertig geladen? Sie sollten auch den webView:didFailLoadWithError: implementieren, um Fehler abzufangen.

Da erhalten Sie weder die Fehlermeldung noch die Erfolgsmeldung. Möglicherweise stimmt etwas nicht mit den Daten, die Sie laden möchten.

Erklären Sie dem WebView, dass es eine HTML-Zeichenfolge laden soll ("Hello World!"), Und prüfen Sie, ob dies erfolgreich ist. Wenn dies der Fall ist, liegt das Problem bei Ihrer Datenressource oder beim Pfad dazu.

8
CharlieMezak

WebView-Delegaten

  1. Laden Sie MBProgessHUD herunter 
  2. Fügen Sie Ihrem Projekt hinzu 
  3. Wenn die Seite geladen wird, wird der Ladevorgang (*) gestartet und nach dem erfolgreichen Laden der Seite ausgeblendet

.h Datei

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

   }

.m Datei

- (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];
}
3
Prithivi

Wahrscheinlich tritt ein Fehler auf. Implementiere –webView:didFailLoadWithError: und überprüfe.

2

Stellen Sie sicher, dass der Delegat () in der .h-Datei der Ansicht implementiert ist, und verbinden Sie den Delegaten mit der Ansicht. Das hat es für mich behoben.

2
woakley5

.h Datei

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

.m Datei

 -(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;
}
0
Gami Nilesh