检测并自定义UIWebView的“无法读取文档”错误

时间:2010-11-24 20:44:57

标签: iphone uiwebview uiwebviewdelegate

我正在测试一个包含许多不同文档类型的UIWebview - .xlsx,.jpg等 - 它打开了大部分文件就好了。我不时会打开一个本地文件,此消息会出现在Web视图中:

Unable to Read Document
An error occurred while reading the document

我不关心“为什么”这个错误发生 - 例如,当我向UIWebView提供垃圾文件(故意)时,它就会发生。问题是我无法弄清楚如何检测“何时”发生这种情况。它不会触发 webView:didFailLoadWithError ,它不会触发 NSException (通过 @try & @catch ),当我在 webViewDidFinishLoad 中检查文档时, webView.request.HTTPBody 为空。

任何人都知道如何检测UIWebView何时无法显示内容?

2 个答案:

答案 0 :(得分:3)

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");
    }

}

答案 1 :(得分:0)

如果检查日志没有显示任何异常,请在实际设备上运行它。作为一点帮助,我的日志说

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

这意味着模拟器失败了。在对同样的问题感到沮丧之后,我通过了整个最终认证和安装以及配置过程,并确认包含文本的Word 97和Pages / Pages.zip文件确实在实际设备上显示得很好。解决了。模拟器本身已经坏了,这非常令人不安,这个小小的音符似乎没有进入发行说明,也使开发变得复杂一点。但是,解决方法是选择Xcode中的Device并进行部署,它应该可以工作。