2010-11-24 75 views
5

我正在测试一个UIWebview与许多不同的文档类型 - .xlsx,.jpg等 - 并打开它们中的大多数就好了。不时,我打开本地文件,并正好出现在Web视图此消息:检测和自定义UIWebView的“无法读取文档”错误

Unable to Read Document 
An error occurred while reading the document 

我不关心“为什么”出现此错误 - 它发生,比如,当我喂UIWebView一个垃圾文件(故意)。问题是我无法弄清楚如何检测“何时”发生这种情况。它不会触发web视图:didFailLoadWithError,它不会触发NSException(通过@try & @catch),当我检查文档中webViewDidFinishLoadwebView.request.HTTPBody为空。

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

+0

这是一个老问题,但在我的情况`webView:didFailLoadWithError`在iOS 7/8中为我工作。使用`stringByEvaluatingJavaScriptFromString`有时会传递给我数据,但它不是我正在寻找的数据(旧的?垃圾文件?)。 – testing 2014-12-16 15:58:57

回答

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

} 
0

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

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

这意味着模拟器失败。在遇到同样的问题后,我通过了最终的认证,安装和配置过程,并确认包含文本的Word 97和Pages/Pages.zip文件在实际设备上确实显示得很好。解决了。模拟器本身被破坏,这非常麻烦,这个小小的注释似乎并没有将它放入发行注释中,而且使开发变得复杂一点。但是,解决方法是在Xcode中选择设备并部署出去,它应该可以工作。

+1

感谢您的回复,但这不是问题。阅读Word文件时我没有问题。相反,我无法检测UIWebView何时无法读取任何特定文件。它与模拟器/设备差异无关。 – cetcet 2011-03-02 19:59:02

相关问题