2013-04-22 7 views
6

私のアプリに問題があります。いくつかの統計を取得した後、私はPDFファイルを生成し、 "Open in iBooks"と "Send By Mail"を中心にUIActivityViewControllerを表示したいと考えています。 URLは/Documents/../statistics.pdfようなパスであるUIActivityViewControllerが「iBooksで開く」オプションを表示しない

self.docController = [UIDocumentInteractionController interactionControllerWithURL:url]; 
self.docController.delegate = self; 
[_docController presentOpenInMenuFromRect:_openInIBooksButton.bounds inView:self.openInIBooksButton animated:YES]; 

まあ事はUIActivityViewControllerを使用しようとする前に、私は次のコードで、UIDocumentInteractionControllerを使用していたということです。それはうまくいって、iBooksのボタンが開いてDropboxで開いているポップオーバーを表示しましたが、Mail by Sendは表示されませんでした。今度は次のコードで変更しました。

NSArray* itemsToShare = [NSArray arrayWithObjects:pdfData, nil]; 
UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:itemsToShare applicationActivities:nil]; 
activityVC.excludedActivityTypes = @[UIActivityTypeCopyToPasteboard]; //or whichever you don't need 
[self presentViewController:activityVC animated:YES completion:nil]; 

ここで、pdfDataはNSDataオブジェクトです。それもうまくいきましたが、今はiBooksオプションではなく電子メールで送信するオプションを示しています。私はその行動の理由を見つけられないので、ナットに行きます、そして、私は2つのオプション、iBooksとMailが必要です。

UIDocumentInteractionControllerが.pdfで終わるパスを持ち、UIActivityViewControllerがNSDataオブジェクトしか持たないという事実と関係があるかどうかはわかりません。しかし、私はそれのための解決策を見つけることができません。

誰かがその問題を以前に見つけましたか?

ありがとうございました。

+0

UIDocumentInteractionControllerの 'presentOptionsMenuFromBarButtonItem'を試しましたか? - そして私は、UIActivityViewControllerの 'initWithActivityItems'引数も配列の中のNSURL項目を受け入れると考えています。 –

+0

お返事ありがとうございますが、あなたがURLに配列を入れると、メールで送信し、twitterオプションで公開するだけです。メールで送信するとタップすると、URLを含むテキストでメール作成者が開きますファイルを添付せずに。 – diegomen

+0

OK、単なるアイデアでした! presentOptionsMenuFromBarButtonItemはどうでしょうか? –

答えて

10

presentOpenInMenuFromRect:inView:animated:を使用すると、指定したファイルでのみ動作するアプリの一覧が表示されます。

あなたが探しているオプションを提供するpresentOptionsMenuFromRect:inView:animated:を使用します。

+0

ありがとうございます。メールに添付されたPDFを開いてプレビューしてボタン共有をタップすると、ポップオーバーが表示され、iBooksで開くオプションがメールで送信できます。 – diegomen

+0

'presentOpenInMenuFromRect:'メソッドを使用する代わりに、 'UIDocumentInteractionController'のpresentOpenInMenuFromRect:'メソッドを使用してください。 – rmaddy

+0

申し訳ありませんが、あなたは同じことを言っています...?どのメソッドについて、あなたはpresentOpenInMenuFromRectを置き換えることについて話しているのですか? – diegomen

関連する問題