UIWebView zeigt leeren Bildschirm in iOS 8

Habe ich eine app, wo ich es herunterladen einer pdf-Datei und speichern Sie es in das iPhone. Es funktionierte perfekt in iOS 7 (ich bin derzeit mit iOS 8) und während der Ausführung der app in iOS 8, die webView einfach leer bleibt. Ich habe ich keine Idee, was falsch ist.

#import "ISJMMisalViewController.h"
#import "SWRevealViewController.h"

@implementation ISJMMisalViewController
@synthesize activityImageView;

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:YES];

    [self.webView addSubview:activityImageView];
    [activityImageView startAnimating];

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

        NSString *resourceDocPath = [[NSString alloc] initWithString:[[[[NSBundle mainBundle] resourcePath]stringByDeletingLastPathComponent] stringByAppendingPathComponent:@"Documents"]];
        NSString *filePath = [resourceDocPath stringByAppendingPathComponent:@"misalLocal.pdf"];

        //Now create Request for the file that was saved in your documents folder
        NSURL *url = [NSURL fileURLWithPath:filePath];
        NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];

        dispatch_async(dispatch_get_main_queue(), ^{

            [self.webView setUserInteractionEnabled:YES];
            [self.webView setDelegate:self];
            [self.webView loadRequest:requestObj];
            [self.webView setScalesPageToFit:YES];
            [activityImageView stopAnimating];
            [activityImageView removeFromSuperview];

        });
    });

}

- (void)viewDidLoad {
    [super viewDidLoad];

    [self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];

    UIImage *image = [UIImage imageNamed: @"NavBarImage.png"];
    UIImageView *imageView = [[UIImageView alloc] initWithImage: image];

    self.navigationItem.titleView = imageView;

    _sidebarButton.target = self.revealViewController;
    _sidebarButton.action = @selector(revealToggle:);

    //Create the first status image and the indicator view
    UIImage *statusImage = [UIImage imageNamed:@"1.png"];
    activityImageView = [[UIImageView alloc] initWithImage:statusImage];


    //Add more images which will be used for the animation
    activityImageView.animationImages = [NSArray arrayWithObjects:
                                         [UIImage imageNamed:@"1.png"],
                                         [UIImage imageNamed:@"2.png"],
                                         [UIImage imageNamed:@"3.png"],
                                         [UIImage imageNamed:@"4.png"],
                                         [UIImage imageNamed:@"5.png"],
                                         [UIImage imageNamed:@"6.png"],
                                         [UIImage imageNamed:@"7.png"],
                                         [UIImage imageNamed:@"8.png"],
                                         [UIImage imageNamed:@"9.png"],
                                         nil];


    //Set the duration of the animation (play with it
    //until it looks nice for you)
    activityImageView.animationDuration = 0.7;


    //Position the activity image view somewhere in
    //the middle of your current view
    activityImageView.frame = CGRectMake(self.view.frame.size.width/2 - 50, self.view.frame.size.height/2 - 100, 100, 100);

    UITapGestureRecognizer *gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(toggleNavBar:)];
    [self. webView addGestureRecognizer:gesture];

    if (!self.webView) {

        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Sin conexión"
                                                        message:@"No fue posible la descarga de datos debido a que no se pudo conectar con el servidor"
                                                       delegate: nil
                                              cancelButtonTitle: @"OK"
                                              otherButtonTitles: nil];

        [alert show];

    }


}

- (IBAction)actualizar:(id)sender {

    [self.webView addSubview:activityImageView];
    [activityImageView startAnimating];

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

        NSData *pdfData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://isjm.weebly.com/uploads/2/5/3/6/25368636/misal.pdf"]];
        NSString *resourceDocPath = [[NSString alloc] initWithString:[[[[NSBundle mainBundle] resourcePath]stringByDeletingLastPathComponent] stringByAppendingPathComponent:@"Documents"]];
        NSString *filePath = [resourceDocPath stringByAppendingPathComponent:@"misalLocal.pdf"];
        [pdfData writeToFile:filePath atomically:YES];

        NSURL *url = [NSURL fileURLWithPath:filePath];
        NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];

        dispatch_async(dispatch_get_main_queue(), ^{

            [self.webView setUserInteractionEnabled:YES];
            [self.webView setDelegate:self];
            [self.webView loadRequest:requestObj];
            [self.webView setScalesPageToFit:YES];
            [activityImageView stopAnimating];
            [activityImageView removeFromSuperview];

            if (!self.webView) {

                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Sin conexión"
                                                                message:@"No fue posible la descarga de datos debido a que no se pudo conectar con el servidor"
                                                               delegate: nil
                                                      cancelButtonTitle: @"OK"
                                                      otherButtonTitles: nil];

                [alert show];
            }
        });
    });
}

- (void)toggleNavBar:(UITapGestureRecognizer *)gesture {

    BOOL barsHidden = self.navigationController.navigationBar.hidden;
    [self.navigationController setNavigationBarHidden:!barsHidden animated:YES];

}

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
}

@end
  • Also welche Teil ist das problem? Ist filePath richtige für Ihre Datei? Warum hast du so viele async-Blöcke? Was ist, wenn Sie versuchen, Ihren code ohne all die async-Blöcke? (Sie scheinen nicht, etwas zu tun, die tatsächlich benötigt werden.)
  • Alles war perfekt so wie es ist in iOS 7. Ich weiß nicht, ob sich etwas geändert hat in iOS 8, die nicht scheinen, um es auszuführen. Tatsächlich ist die async-Blöcke sind eine große Hilfe, wenn es um das laden der PDF-Dateien.
  • Was ich Vorschlage, ist, dass Sie möglicherweise tun müssen, um einige debugging-Arbeit, um herauszufinden, wo das problem ist. Es könnte ein bug in iOS 8, oder es könnte ein Fehler in deinem code (das versehentlich passiert ist, um die Arbeit in iOS 7).
  • Dies ist ein ios8-bug. Ich habe entwickelt ein html5-Spiel, das läuft perfekt auf ios7. Es ist bereits aufgeführt im appstore. Aber in ios8, es öffnet einfach leer.
  • Hast du jemals eine Lösung finden?
  • es ist eine ähnliche Frage hier beantwortet stackoverflow.com/questions/25256905/...
  • Problem ist behoben in der neuesten Version 8.0.

Schreibe einen Kommentar