let ac = UIActivityViewController(activityItems: [obj], applicationActivities: nil)
ac.popoverPresentationController?.sourceView = self.view
self.navigationController?.presentViewController(ac, animated: true, completion: nil)我知道它是有效的,因为我能够从我的笔记本电脑上AirDrop它,它被复制并在我的iPad上正确地打开,上面有eDrawings应用程序。
如果您查看包含上述iPad上的eDrawings支持的文件类型的邮件消息,您可以看到它在弹出窗口中提供了预期的选项。

我的问题是,我怎样才能做同样的事情呢?邮件必须在不显式知道UTI的情况下执行此操作,那么我在上面提供的示例代码中的obj字段应该是什么,才能让我的activity视图控制器显示与邮件中相同的选项?我尝试过在本地下载文件时使用NSURL,也尝试使用网络上的URL。这两种方法都不起作用。我认为我应该只使用NSData,但在这一点上,活动视图控制器如何知道它是什么类型,就像它在邮件中所做的那样?
有什么想法吗?
发布于 2019-06-11 23:28:20
试着把“活动视图”想象成iOS (一个无文件环境)中的一个地方,开发者可以在这里让他们的文件逃离设备。
API说给我一个列表,我将填充视图。文档中有详细信息,隐藏在枚举描述中...
对于AirDrop
使用此服务时,您可以提供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:).中返回数据对象的NSData此外,您可能需要注册适当的映射,以便可以确定MIME类型。
https://developer.apple.com/documentation/uikit/uiactivity/activitytype/1620669-mail
发布于 2016-10-19 09:35:51
尝试在您的obj类中实现UIActivityItemSource。
https://stackoverflow.com/questions/38002864
复制相似问题