我的应用程序有问题。在获得一些统计数据后,我生成了一个 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 对象这一事实有关。但我找不到解决方案。
以前有人发现过这个问题吗?
非常感谢。