Open InメニューのUIDocumentInteractionController - 機能しません

他のアプリケーションにファイルを送信するためのUIDocumentInteractionControllerを実装しました。ファイルは.txtファイルです。

コードは次のとおりです:

UIDocumentInteractionController *interactionController = [[UIDocumentInteractionController alloc] init];
[interactionController setURL:[NSURL fileURLWithPath:filePath]];
[interactionController setUTI:@"public.text"];
[interactionController setDelegate:self];
[interactionController presentOpenInMenuFromBarButtonItem:actionBarButtonItem animated:YES];

メニューはうまく開いて、私が期待しているPages、Dropboxなどのアプリを表示します。しかし、それらの1つをタップすると、「開く」メニューが閉じられ、何も実行されません(ファイルは送信されず、ターゲットアプリケーションは開かれません)。

私はコピーを起動するためのデリゲートメソッド documentInteractionController:canPerformAction:documentInteractionController:performAction:を実装しようとしました:そしてメニュー:(メニューではなく)それはリストされたページだけでメニューをプルアップしましたが、それでも動作しませんでした。

これはどのように解決されるでしょうか?

22

3 答え

私は答えを見つけました。それはメモリ管理です。私はUIDocumentInteractionControllerを作成し、それを提示しますが、インスタンス変数としては持っていません。 ARCは何かをする機会がある前にそれを割り当て解除します。これには、ドキュメントを外部アプリに送信することも含まれます。

このバグはiPhoneには表示されませんでしたが、iPad上ではpopoverアーキテクチャが少し違って動作し、割り当てが解除されたときに描画しようとするため、エラーが発生します。それがバグに私に警告したものです。

49
追加された
thnx。数時間を費やしました。アークを忘れる。 thnxもう一度多くの。
追加された 著者 Serg Shiyan,
これはARCプロジェクトの答えです。 UIDocumentInteractionControllerのプロパティを宣言する必要があります。@property(非原子的、強力)UIDocumentInteractionController * docController;
追加された 著者 tony.tc.leung,
ありがとう!私は長い間スタックを検索していました。
追加された 著者 huoxinbird,

このバグは、iPhone/iPodにも表示されます。ちょうどセット:

@property (nonatomic, retain) UIDocumentInteractionController *docController;

保持され、ドキュメントは新しいアプリケーションに渡されます。

16
追加された

次のコードを追加すれば十分です。

[interactionController retain];
4
追加された