Wenn es eine große Datei ist, können/sollten Sie nicht UIWebView
verwenden.
Warum? Ich habe versucht, eine Dokumentdatei (docx) mit ein paar Bildern zu zeigen und meine Anwendung stürzte ab, nachdem ich eine Speicherwarnung geworfen hatte. Der Grund war einfach. Obwohl die Dateigröße ~ 2,5 MB betrug, verfügte das Gerät nicht über genügend RAM/Speicher, um alle Bitmap-Bilder (die in das Dokument eingebettet waren) anzuzeigen. Das Debuggen des Problems mithilfe von Instruments zeigte, dass der Anwendungsspeicher von 30 MB auf 230 MB anstieg. Ich kann mir vorstellen, dass Sie etwas Ähnliches erleben.
Mögliche Lösungen:
nicht erlauben dem Anwender große Dateien auf ihren mobilen Geräten zu öffnen. Entweder das oder der Ladevorgang UIWebView
wird angehalten/angehalten, wenn Sie eine Speicherwarnung erhalten.
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
if ([self.webView isLoading]) {
[self.webView stopLoading];
}
}
Versuchen Sie stattdessen [UIApplication sharedApplication] openURL:]
Methode.
Verwenden Sie stattdessen UIDocumentInteractionController
.
UIDocumentInteractionController *documentInteractionController = [UIDocumentInteractionController interactionControllerWithURL:targetURL];
documentInteractionController.delegate = self;
BOOL present = [documentInteractionController presentPreviewAnimated:YES];
if (!present) {
// Allow user to open the file in external editor
CGRect rect = CGRectMake(0.0, 0.0, self.view.frame.size.width, 10.0f);
present = [documentInteractionController presentOpenInMenuFromRect:rect inView:self.view animated:YES];
if (!present) {
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error"
message:@"Cannot preview or open the selected file"
delegate:nil
cancelButtonTitle:NSLocalizedString(@"OK", nil)
otherButtonTitles:nil, nil];
[alertView show];
}
}
Hinweis: Ich habe mit den oben genannten Methoden nicht versucht, eine Keynote-Datei zu öffnen. Um UIDocumentInteractionController
zu verwenden, müssen Sie zuerst die Datei herunterladen.
Hoffe, das hilft.
Hallo, ich habe auch das gleiche Problem. Haben Sie eine Lösung dafür gefunden? – Ilanchezhian