5

さまざまなドキュメントを表示するために使用している UIWebView を含む UIViewController があります。ときどき、UIWebView でサポートされていないドキュメントを読み込もうとすることがあります (古い Excel 2.0 シートなど)。現在、これにより、デバッグ ウィンドウに次のような出力が表示されます。

例外: CPMessageException: ファイル形式が無効です。

例外 CPMessageException: (null)

webViewDidStartLoad メソッドは起動しますが、webViewDidFinishLoad も didFailLoadWithError も起動しません。

このエラーによってアプリがクラッシュすることはありませんが、この例外をトラップして、ユーザーに独自のメッセージを提供したいと考えています。これをトラップして処理する方法を誰かが提案できますか?

どうもありがとう、ジョナサン

4

1 に答える 1

1

残念ながら、CPMessageException は Apple のプライベート フレームワークの一部です。オフィス ファイルの場合、OfficeImport.framework. これは、フレームワークが使用できないファイルを受け取ったときにスローされます。

アプリケーションがクラッシュしない理由は、おそらくインポート コード自体で処理されているためです。NSSetUncaughtExceptionHandler を設定しても機能しません (過去に試したように)。

これを回避する最善の方法は、UIWebView の shouldStartLoadWithRequest デリゲート メソッドを使用することです。

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

ここで、ファイルが Web ビューにロードされるのを先制的に停止し、無知な空白の画面を回避できます。

(NSLog出力をその場で読み取って監視できるようにする方法があるかどうかはわかりません。しかし、それはおそらく正しい方法ではありません!)

更新: これに関するバグを報告しました。Apple 開発者がこれについて何を言わなければならないか見てみましょう。

于 2012-09-05T09:41:15.443 に答える