Обнаружить и настроить ошибку UIWebView «Невозможно прочитать документ» - PullRequest
5 голосов
/ 24 ноября 2010

Я тестирую UIWebview с несколькими различными типами документов - .xlsx, .jpg и т. Д. - и он открывает большинство из них просто отлично.Время от времени я открываю локальный файл, и это сообщение появляется прямо в веб-представлении:

Unable to Read Document
An error occurred while reading the document

Меня не интересует, «почему» возникает эта ошибка - это происходит, например, когда яскормить UIWebView мусорным файлом (намеренно).Проблема в том, что я не могу понять, как определить, «когда» это происходит.Он не запускает webView: didFailLoadWithError , не вызывает NSException (через @ try & @ catch ) икогда я проверяю документ в webViewDidFinishLoad , webView.request.HTTPBody равен нулю.

Кто-нибудь знает, как определить, когда UIWebView не может отображать содержимое?

Ответы [ 2 ]

3 голосов
/ 27 июня 2013
just call uiwebview delegate method 

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

}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    NSString *html = [webView stringByEvaluatingJavaScriptFromString:
                      @"document.body.innerHTML"];
    if ([html rangeOfString:@"Unable to Read Document."].location == NSNotFound) {

       NSLog(@"NO Error");

    }
    else
    {
//        NSLog(@"File contains Error");
    }

}
0 голосов
/ 27 февраля 2011

Если проверка журнала не показывает ничего необычного, запустите его на реальном устройстве.В качестве справки в моем журнале написано

Cannot find data converter callback for uti public.data
Failed to generate preview

, что означает, что симулятор не работает.Разочаровавшись в этой же проблеме, я прошел весь окончательный процесс сертификации, установки и подготовки и также подтвердил, что файлы Word 97 и Pages / Pages.zip, содержащие текст, действительно хорошо отображаются на реальном устройстве.Решаемые.Сам симулятор сломан, что очень ... беспокоит, что эта небольшая заметка, похоже, не вошла в заметки о выпуске, а также немного усложняет разработку.Однако, обходной путь состоит в том, чтобы выбрать Устройство в XCode и развернуть, и это должно работать.

...