6

我的应用程序有问题。在获得一些统计数据后,我生成了一个 PDF 文件,并且我想显示一个 UIActivityViewController,其中主要包含“在 iBooks 中打开”和“通过邮件发送”选项(其他类似“在 Dropbox 中打开”会很棒)。

好吧,在尝试使用 UIActivityViewController 之前,我使用的是 UIDocumentInteractionController,代码如下:

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

其中 url 是 /Documents/../statistics.pdf 之类的路径。它起作用了,它显示了一个弹出窗口,其中按钮在 iBooks 中打开并在 Dropbox 中打开,但不是通过邮件发送。现在我用下面的代码改变了它:

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 选项。我要疯了,因为我找不到这种行为的原因,我需要两个选项,iBooks 和 Mail。

我不知道这是否与 UIDocumentInteractionController 的路径以 .pdf 结尾并且 UIActivityViewController 只有一个 NSData 对象这一事实有关。但我找不到解决方案。

以前有人发现过这个问题吗?

非常感谢。

4

1 回答 1

10

当您使用时,presentOpenInMenuFromRect:inView:animated:您只会获得可以使用给定文件的应用程序列表。

您想要使用的是presentOptionsMenuFromRect:inView:animated:它为您提供了您正在寻找的选项。

于 2013-04-22T18:57:02.523 回答