【发布时间】:2013-04-15 18:46:18
【问题描述】:
我的应用程序有问题。得到一些统计数据后,我生成了一个 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 对象这一事实有关。但我找不到解决方案。
以前有人发现过这个问题吗?
非常感谢。
【问题讨论】:
-
你试过 UIDocumentInteractionController 的
presentOptionsMenuFromBarButtonItem了吗? - 我认为 UIActivityViewController 的initWithActivityItems参数也接受数组中的 NSURL 项目,这可能会有所帮助。 -
感谢您的回复,但是如果您将 url 放入数组中,它只会显示通过邮件发送和在 twitter 上发布选项,如果您点击通过邮件发送,它会打开邮件编辑器包含 url,但不附加文件的文本..
-
好吧,这只是一个想法! presentOptionsMenuFromBarButtonItem 呢?
标签: objective-c email pdf ibooks uiactivityviewcontroller