共享工作表 – 排除未在UIActivityType中作为“类型属性”提供的选项

我想从共享表中排除Add to iCloud Drive, Add to Reading List, Save to Files & Print

我可以使用以下代码排除添加到阅读列表和打印选项。 因为已提供这些类型属性 。

 activityViewController.excludedActivityTypes = [ UIActivityType.print, UIActivityType.addToReadingList ] 

在我搜索谷歌之后,我找到了一种方法来删除未包含在类型属性中的选项,如下所示(例如:添加到iCloud驱动器)

 UIActivityType(rawValue: "com.apple.CloudDocsUI.AddToiCloudDrive") 

我想知道我们如何找到行值以排除未在类型属性中定义的其他选项。 例如保存到文件

我尝试了Geoff的建议(通过实现completionWithItemsHandler记录UIActivityType ):禁用“添加到Notes”,“添加提醒”和“保存到文件”。 除“保存到文件”外,它的工作原理除外。

保存到文件UIActivityType的记录类型与此问题中列出的类型相同,并且将此添加到excludedActivityTypes不适用于iOS 11.1.2。 其他人( 这里 和这里 )也遇到了这个问题。

目前似乎没有办法排除保存到文件UIActivityType 。 希望Apple能够尽快更新有关如何操作的文档。

确定UIActivityType值用于未记录类型的最简单方法是添加completionWithItemsHandler: block,该块记录调用它的UIActivityType参数。 然后使用您的应用分享内容并选择要为其查找值的活动类型。 将调用完成处理程序,记录其类型。

或者,您可以创建自己的实现UIActivityItemSource的对象,将其添加到您正在共享的项活动中并实现activityViewController(_:itemForActivityType:)并记录类型。