0

因此,您共享文档的典型方式UIActivityViewController是类似于以下代码:

let ac = UIActivityViewController(activityItems: [obj], applicationActivities: nil)
ac.popoverPresentationController?.sourceView = self.view
self.navigationController?.presentViewController(ac, animated: true, completion: nil)

问题是我不确定obj应该是什么样的课程。我有一个适用于 SolidWorks 的 eDrawings iOS 应用程序的文件。我知道它可以工作,因为我能够从我的笔记本电脑 AirDrop 它被复制并在装有 eDrawings 应用程序的 iPad 上正确打开。

如果您查看包含所述 iPad 上 eDrawings 支持的文件类型的邮件消息,您可以看到它在弹出窗口中提供了预期的选项。

在此处输入图像描述

我的问题是,我怎样才能做同样的事情?Mail 必须在不明确知道 UTI 的情况下进行一般性操作,那么obj为了让我的活动视图控制器显示与 Mail 中相同的选项,我上面提供的示例代码中的字段应该是什么?我尝试将NSURL两者与本地下载的文件以及网络上的 URL 一起使用。这些都不起作用。我想我应该只使用一个NSData,但在这一点上,活动视图控制器如何知道它隐含的类型,就像它在邮件中所做的那样?

有任何想法吗?

4

2 回答 2

1

尝试将“活动视图”想象为 iOS(无文件环境)中开发人员可以允许他们的文件逃离设备的地方。

API 说给我一个列表,我会填满视图。文档有详细信息,隐藏在枚举描述中......

空投

使用此服务时,您可以提供 NSString、NSAttributedString、UIImage、ALAsset 和 NSURL 对象作为活动项的数据。您还可以指定其内容使用 assets-library 方案的 NSURL 对象。您还可以提供包含列出的数据类型的 NSArray 或 NSDictionary 对象。

https://developer.apple.com/documentation/uikit/uiactivity/activitytype/1620665-airdrop

邮件

使用此服务时,您可以提供 NSString 和 UIImage 对象以及指向本地文件的 NSURL 对象作为活动项的数据。要指定一个NSData对象,必须实现UIActivityItemSource协议,在activityViewController( :itemForActivityType:)中返回数据对象,在activityViewController(:dataTypeIdentifierForActivityType:)中返回数据对象的UTI。此外,您可能需要注册适当的映射,以便可以确定 MIME 类型。

https://developer.apple.com/documentation/uikit/uiactivity/activitytype/1620669-mail

于 2019-06-11T15:28:19.813 回答
0

尝试在你的 obj 类中实现UIActivityItemSource 。

于 2016-10-19T01:35:51.040 回答