2010/11/18

UIDocumentInteractionControllerを用いて別アプリケーションを開くメニューを表示する方法について

メール (Mail.app) などで添付ファイルを長押し (タップアンドホールド) すると、「クイックルック (Quick Look)」を含めた対応可能なアプリケーションを選択させるためのアクションシートが表示されます。今回はこのアクションシートの表示の方法を説明します。

このアクションシートの表示にはクラスUIDocumentInteractionControllerを利用します。その使用例を次に示します。このコントローラは命名規則からわかるように自動解放されるため、retainしておく必要があります。

  - (void)openMenuButtonClicked:(id)sender {
      UIDocumentInteractionController* diController = [UIDocumentInteractionController interactionControllerWithURL:url];
      diController.delegate = self;
  
      if ([diController presentOptionsMenuFromRect:self.view.frame inView:self.view animated:YES])
          [diController retain];
  }
  - (UIViewController*)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController*)controller {
      return self; // プレビュー用に用いるビューコントローラ
  }
? - (void)documentInteractionControllerDidEndPreview:(UIDocumentInteractionController *)controller {
?     [controller autorelease];
? }
2010.12.21追記: コントローラの解放周りのコードが間違っており、正しく解放されない場合があります。詳細は次の記事を参照してください。

また、メールでのタップのようにいきなり対象ファイルをプレビュー表示させたいときはpresentPreviewAnimated:を用います。

ちなみに対応アプリケーションが増えると次のようになります。

関連項目

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。