我们如何知道传递给 UIActivityViewController 的数据对象做了啥?

Posted

技术标签:

【中文标题】我们如何知道传递给 UIActivityViewController 的数据对象做了啥?【英文标题】:How do we know what gets done with data objects passed to UIActivityViewController?我们如何知道传递给 UIActivityViewController 的数据对象做了什么? 【发布时间】:2013-09-23 16:40:13 【问题描述】:

例如,UIActivityTypeAirDrop 状态的文档

使用该服务时,可以提供NSString、NSAttributedString、 UIImage、ALAsset 和 NSURL 对象作为活动项的数据。 你也可以指定 NSURL 对象,其内容使用 资产图书馆计划。你也可以提供 NSArray 或 NSDictionary 包含列出的数据类型的对象。

但是我们如何知道每个数据对象到底要做什么呢?我们是否只需要通过实验来找出答案?其他 UIActivity 类型也一样,它们都没有说明对象具体做了什么。

【问题讨论】:

【参考方案1】:

不幸的是,该控制器的文档并不全面,也没有太多详细信息。实验几乎就是我最终要做的事情。其中一些是常识,例如需要图像对象的“保存到相机胶卷”。大多数其他人会尝试使用你给他们的任何东西(URL、文本、图像等)。

我将实现您自己的UIActivityItemSource 以传递给控制器​​,并为每个单独的活动项类型准确返回您想要的媒体,这样实际传递给用户的内容就不会产生歧义。

【讨论】:

其实在使用UIActivityItemSource的时候需要确保placeholderItem协议方法返回的对象的类类型与itemForActivityType返回值的类类型匹配。因此,您应该做的是为您想要支持的每种类型创建一个 UIActivityItemSource 对象,然后根据所选择的活动在 itemForActivityType 方法中返回 nil。只要确保对于任何选定的活动,至少有一个 UIActivityItemSource 对象返回非零值,否则可能会发生坏事。 正确。很好的补充。

以上是关于我们如何知道传递给 UIActivityViewController 的数据对象做了啥?的主要内容,如果未能解决你的问题,请参考以下文章

我们如何确定 XMPP 消息何时传递?

Python - 如何传递给类对象的函数参数类型(打字)

如何将单击的列表项值传递给另一个活动?

我如何知道哪些选项从 CMake 传递给 GCC?

Vue.js 不知道如何将 props 传递给 map() 函数和循环组件

如何知道用户是不是正在打字或消息是不是已在聊天应用程序中传递给他