UIActivityViewController
在我的应用中基本上按预期工作。我通常可以排除活动并提供所需的数据,无论是字符串还是pdf。还有一点让我迷惑。当我将PDF
选项与String
一起添加时,如下所示(#1),Print
是一个选项,但Add to Notes
和Add to iCloud Drive
不是。如果我不提供PDF选项(#2),则不会显示Print
,但会显示Add to Notes
和Add to iCloud Drive
(并且正常工作)。所以问题是,当我提供String 和 PDF时,我做错了什么并不允许Add to Notes
出现?
谢谢!
var objectsToShare: [AnyObject] = [myString(), myPDF()]
let activityViewController = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)
var objectsToShare: [AnyObject] = [myString()]
let activityViewController = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)
编辑:在搜索和阅读中,来自Tubmlr的人们的博客帖子,如果我理解的话,说如果共享扩展支持所有的共享扩展,那么共享扩展将出现在UIActivityViewController中应用程序提供的活动项目。也就是说,我的应用程序提供字符串和PDF,我发现有些扩展会占用文本(注意?),有些会处理PDF(打印),有些可能同时执行(邮件?消息?)。似乎我错了。当我最终构建一个合法的共享扩展(只处理文本)时,它表现得像Notes,只有当活动项只是String时才出现。有没有人有这个策略?如果我没有发布PDF,我会丢失打印;如果我这样做,那么我会失去Notes和其他人。这对我来说还没有意义。
修改:在研究共享扩展时,发现了更多要阅读的内容,看到了有关此主题的各种评论。以及克服感知限制的不同策略和尝试机制。 Pages采用向用户询问首选数据类型(RTF,Pages,PDF,Word等)的方法。只需使用Text和PDF,就可以权衡为用户提供最佳和最强大的扩展以及在用户和控制器之间建立接口的麻烦。