我的应用程序出现了问题。在获取一些统计数据后,我生成了一个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对象有关。但是我找不到解决方法。
有人之前遇到过这个问题吗?
非常感谢。
presentOptionsMenuFromBarButtonItem
吗?我认为UIActivityViewController的initWithActivityItems
参数也可以在数组中接受NSURL项目,这可能会有所帮助。 - Martin R