UIActivityViewController没有显示“在iBooks中打开”选项。

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对象有关。但是我找不到解决方法。

有人之前遇到过这个问题吗?

非常感谢。


你尝试过使用UIDocumentInteractionController的presentOptionsMenuFromBarButtonItem吗?我认为UIActivityViewController的initWithActivityItems参数也可以在数组中接受NSURL项目,这可能会有所帮助。 - Martin R
谢谢您的回复,但如果您在数组中放置一个URL,它只会显示通过电子邮件发送和发布到Twitter的选项。如果您点击“通过电子邮件发送”,它会打开邮件编辑器,并包含URL的文本,但不会附加文件。 - diegomen
好的,这只是一个想法!那么presentOptionsMenuFromBarButtonItem怎么样? - Martin R
1个回答

10

当你使用 presentOpenInMenuFromRect:inView:animated: 时,你只会得到能够处理给定文件的应用程序列表。

你需要使用的是 presentOptionsMenuFromRect:inView:animated:,它会提供你所需的选项。


不要使用presentOpenInMenuFromRect:方法,而是使用UIDocumentInteractionControllerpresentOpenInMenuFromRect:方法。 - rmaddy
抱歉,但是你说的是同样的事情吗?你在谈论用什么方法替换presentOpenInMenuFromRect:方法? - diegomen
我还没有足够的声望来投票,但我已经标记为正确答案,再次非常感谢! - diegomen
1
@diegomen,所以你实际上没有使用UIActivityViewController吗? - Ji Fang
@JiFang UIActivityViewController只显示活动选项,而不显示“打开...”选项,即使只有一个activityItem。如果您的应用程序允许多个选择,则建议对于单个项目使用UIDocumentInteractionController,对于多个项目使用UIActivityViewController。 - Dale
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接