バンドルに多数の PDF を含むアプリがあります。ユーザーがボタンをタップするか、表のセルを選択すると、対応する PDF が UIDocumentInteractionController に表示されます。
これは、私のマシンとほとんどのテスト マシンで問題なく動作しますが、iPhone でプレビューが表示されないユーザーが 1 人います。彼は私にスクリーンショットを送ってくれました。コントローラーはそのビューをナビゲーション スタックにプッシュし、ナビゲーション バーの正しいファイル名の横に「アクション」メニューが表示されます。しかし、PDF自体が表示される大きなスペースは、ただの濃い灰色です。
これは 6.0.1 を実行している新しい iPhone です。同じく 6.0.1 を実行している彼の iPad でも問題なく動作します。5.0.1 を実行している私の iPhone 4S でも問題なく動作します。「正常に動作する」とは、ファイル名やアクション メニューなど、周囲の詳細がまったく同じであることを意味しますが、大きなグレー スペースの代わりに、PDF の動作プレビューが表示されます。
私のView Controller階層は、タブコントローラーと、各タブ内のナビゲーションコントローラーで構成されています。同じ問題は、ナビゲーション スタックのいくつかのレベルにあるテーブル ビューからも、ナビゲーション スタックの最上位レベルにある HTML ビューからも存在します。コントローラーを表示するコードは次のようになります。
self.DIC = [UIDocumentInteractionController interactionControllerWithURL:url];
self.DIC.delegate = self;
[self.DIC presentPreviewAnimated:YES];
実装されている唯一のデリゲート メソッドは次のとおりです。
- (UIViewController *) documentInteractionControllerViewControllerForPreview: (UIDocumentInteractionController *) controller {
if (curTabViewController) return curTabViewController;
return tabCtrl;
}
これは、tabBarController:didSelectViewController で設定した現在のナビゲーション ビュー コントローラーを返します。DIC がそのビューをモーダルにポップアップするのではなく、ナビゲーション スタックにプッシュしたため、それが機能していることがわかります。
そう。UIDocumentInteractionController が一部のデバイスでプレビューを描画できず、他のデバイスでは描画できない理由は何ですか?
更新: このデバイスをデバッグ用にセットアップすることができました。ログ ファイルに表示される唯一の手がかりは、次のエラーです。
Cannot find preview item for loaded proxy: <QLPreviewItemProxy: 0x1fd67820> -
file://localhost/var/mobile/Applications/22DDE4EB-6FB6-4364-87D6-E3680E1E1A9B
/agilentJAL.app/BuiltInFiles/help/Getting_Started.pdf
インターウェブを検索したところ、この質問が見つかりましたが、私の場合は当てはまらないようです。パスを再確認したところ、正しいように見えます (そして、DIC メニューはドキュメントを電子メールで送信したり、DropBox で開いたりすることができます)。他に何がこのエラーを引き起こす可能性がありますか?