2010-11-24 15 views
5

さまざまな種類のドキュメント(.xlsx、.jpgなど)を使用してUIWebviewをテストしています。時々、私は、ローカルのファイルを開くと、このメッセージは、右のWebビューに表示されます。UIWebViewの「ドキュメントを読み取ることができません」エラーを検出してカスタマイズする

Unable to Read Document 
An error occurred while reading the document 

私は「なぜ」このエラーが発生すると懸念していないよ - それが起こる、例えば、私は餌ときUIWebViewガベージファイル(意図的に)。問題は、これが起こった時を「どのように」検出するのか分かりません。それは、のWebViewをトリガしません:didFailLoadWithErrorは、それが(@try & @catch経由)NSExceptionを誘発しない、と私はwebViewDidFinishLoadwebView.request.HTTPBodyで文書を検査したときにはnullです。

誰かがUIWebViewがコンテンツを表示できないときを検出する方法を知っていますか?

+0

私の場合、「webView:didFailLoadWithError」はiOS 7/8で私のために働いていました。 'stringByEvaluatingJavaScriptFromString'を使用するとデータを渡すことがありますが、これは私が探していたものではありませんでした(古いもの?ガベージファイルですか?)。 – testing

答えて

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でDeviceを選択して展開することです。これは動作するはずです。

+1

返信いただきありがとうございますが、それは問題ではありません。私はWordファイルを読むのに問題はありません。むしろ、UIWebViewが特定のファイルを読み取ることができないときを検出するのに問題があります。シミュレータとデバイスの不一致とは関係ありません。 – cetcet

+0

は、通常、nilの戻り値、またはゼロ長の戻り値をチェックします。私はファイルに間違ったエンコーディングを使用していました(私はUTFではなくRoman 8として保存しました)。ルーチンは失敗していませんでしたが、文字列は長さ0でした。そのことを理解するのに2日かかりました。 – PapaSmurf

+0

@PapaSmurf:誰が何を返すべきですか? – testing

関連する問題