我正在我的 ios9 应用程序中创建一个 pdf,并希望能够使用 UIActivityViewController 将其保存到 iBooks。不幸的是,对于我当前使用的代码(假设所有选项都使用:
applicationActivities: nil
我可以对文件执行的操作将显示)仅显示“消息”和“邮件”项目。我不排除任何事件,因此假设 UIActivityTypeOpenInIBooks 应该显示得很好。但是,除了消息和邮件之外,我无法获取 iBooks 或其他任何内容。 (为了将来的引用,我将此结果称为结果A)是否有其他推荐的方法来做到这一点? 我正在使用的代码如下:
// creating pdf image from the UIView
let pdf = self.getPDFImageFromDrawingView()
let activityViewController = UIActivityViewController(activityItems: [pdf], applicationActivities: nil) //should include any and all available activities right?
self.presentViewController(activityViewController, animated: true, completion: nil)
有什么明显的我忘记了吗?如何将 iBooks 作为保存文件的选项?
编辑:
在调试此问题时,我已将 UIView 内容保存为 JPG 和 pdf 文件。当我仅使用生成的 UIImage 时:
(结果 B)
let image = self.getUIImageFromDrawingView() // generate a UIImage object
let activityViewController = UIActivityViewController(activityItems: [image], applicationActivities: nil)
self.presentViewController(activityViewController, animated: true, completion: nil)
所有可能的选项都会显示,包括在 iBooks 中打开(是的!但我需要通过创建 PDF 生成更高分辨率的图像。)
当我将图像和 pdf 添加到 ActivityItems 时(如下所示:
(结果 C)
let image = self.getUIImageFromDrawingView() // UIImage
let pdf = self.getPDFImageFromDrawingView() //produces an NSData object
let activityViewController = UIActivityViewController(activityItems: [image, pdf], applicationActivities:nil)
),我得到了比原始邮件和消息选项更多的选项 - 例如 FB、Pinterest 和 Evernote - 但没有 iBooks。
最后,当我回到仅使用 PDF 时,我得到的内容与以前相同 - 只有邮件和消息。可能是什么原因造成的? (顺便说一句,有趣的是,如果不是没用的话 - 当同时使用 JPG 和 PDF 并使用 Mail 测试 applicationActivities 时 - 我收到了 jpg 和 pdf 的电子邮件,如预期的那样。因此文件正在按预期生成)。
什么可能导致这种奇怪的行为?
编辑 2:
我认为问题可能是我正在使用 NSData 发送 pdf。因此,我将该对象保存为 NSURL 并使用它。我得到了与上面 (C) 相同的结果 - 更多选项,然后只有消息和邮件,但没有 iBooks。使用 UIImage + NSURL 组合以及单独使用 NSURL 时都会得到这个结果。当我单独使用 UIImage 时,我有很多很多选择,就像之前的情况一样,包括 iBooks。
最佳答案
我已经尝试了各种方法,但无法让它与 UIActivityController 一起工作。 然而,当我使用 UIDocumentInteractionController 时,它就像一个魅力:
let pdfData = self.getPDFasNSData() // get the NSData object
let fileURL = self.getCurrentPDFURLName() //get the NSURL
self.docController = UIDocumentInteractionController(URL: fileURL)
if (fileURL != nil)
{
pdfData.writeToURL(fileURL, atomically: true);
self.docController.presentOptionsMenuFromBarButtonItem(self.organizeBarButton, animated: true)
}
现在“在 iBooks 中打开”选项出现。
关于swift - 如何使用 UIActivityViewController 将我的应用程序中创建的 PDF 文件保存到 iBooks?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38944451/