我们如何知道传递给 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 的数据对象做了啥?的主要内容,如果未能解决你的问题,请参考以下文章