0

背景

我的应用程序支持使用以下代码导出 CSV 文件(其中CSVFileActivityItemProvider是一个UIActivityItemProvider子类,它提供了存储在 CSV 文件中的 URL FileManager.default.temporaryDirectory):

func exportCSVFile() {
    let item = CSVFileActivityItemProvider()
    let controller = UIActivityViewController(activityItems: [item], applicationActivities: nil)
    present(controller, animated: true)
}

除了“添加标签”操作(如果安装了 Apple 的文件应用程序可能会添加?),该代码运行良好。轻按时,会显示“添加标签”控制器,然后立即关闭。

添加标签图片

问题

  1. 如何处理中的“添加标签”操作UIActivityViewController
  2. 我可以排除“添加标签”操作吗(就像 Apple 在 iOS 上的 Numbers v11.1 中将文档导出到 TSV 时所做的那样)?
4

2 回答 2

0

如何处理中的“添加标签”操作UIActivityViewController

你不处理。它是系统定义的。

我可以排除“添加标签”操作吗(就像 Apple 在 iOS 上的 Numbers v11.1 中将文档导出到 TSV 时所做的那样)?

看着这两个——

UIActivityViewController.excludedActivityTypes

&

UIAcitivity.activity.type

伪代码:它可能很简单(如果您使用私有 API)。

activityViewController.excludedActivities = [.addTags]

不幸的是,没有用于此的公共 API。所以目前似乎没有办法用公共 API 排除这个。

这是一个Objective-C类,您可以尝试在运行时检查它的实例变量(在呈现和加载之后),然后尝试尝试解决您的问题,但是

  1. 很可能会让你被 App Store 拒绝。
  2. 每个新的 iOS 版本都需要不断维护。
于 2021-06-20T06:26:16.660 回答
0

事实证明,简单地使用 TSV 文件而不是 CSV 文件将自动排除“添加标签”操作(这解释了我在 Numbers 中看到的内容)。这对我来说是一个可行的解决方法。在不需要 TSV 文件的情况下,至少可以使用 UIActivityViewController.CompletionWithItemsHandler.

于 2021-06-20T08:50:49.483 回答