Se si tratta di un file di grandi dimensioni, non è possibile/non utilizzare UIWebView
.
Perché? Ho provato a mostrare un file di documento (docx) con un paio di immagini e la mia applicazione si è bloccata, dopo aver lanciato un avviso di memoria. La ragione era semplice. Sebbene la dimensione del file fosse ~ 2,5 MB, il dispositivo non aveva abbastanza RAM/memoria per visualizzare tutte le immagini bitmap (che erano incorporate nel documento). Il debugging del problema con gli strumenti ha mostrato che la memoria dell'applicazione stava passando da 30 MB a 230 MB. Immagino tu stia vivendo qualcosa di simile.
Possibili soluzioni:
Non permettere all'utente di aprire file di grandi dimensioni sui propri dispositivi mobili. O questo, o con garbo ferma/ferma il processo di caricamento UIWebView
quando ricevi un avviso di memoria.
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
if ([self.webView isLoading]) {
[self.webView stopLoading];
}
}
Prova utilizzando [UIApplication sharedApplication] openURL:]
metodo, invece.
Provare a utilizzare UIDocumentInteractionController
invece.
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];
}
}
Nota: non ho provato ad aprire un file keynote utilizzando i metodi di cui sopra. Per utilizzare UIDocumentInteractionController
, devi prima scaricare il file.
Spero che questo aiuti.
ciao, anche io sto affrontando lo stesso problema. Hai trovato qualche soluzione per questo? – Ilanchezhian