定义两个
UIActivityItemSource类,一个用于 Image ,一个用于 Text 。
在第一个中,仅返回图像。在第二个中返回
NSObject()placeHolder,然后返回
Text或
nil取决于活动。通过返回
NSObject(),UIActivity将允许所有服务可用。
UIActivityViewController(activityItems: [ImageProvider(), TextProvider()], applicationActivities: nil)
和提供者:
class TextProvider: NSObject, UIActivityItemSource { func activityViewControllerPlaceholderItem(_ activityViewController: UIActivityViewController) -> Any { return NSObject() } func activityViewController(_ activityViewController: UIActivityViewController, itemForActivityType activityType: UIActivityType) -> Any? { if activityType == .postToTwitter || activityType == .postToFacebook { return "Tweet with #Hashtag" } return nil }}class ImageProvider: NSObject, UIActivityItemSource { func activityViewControllerPlaceholderItem(_ activityViewController: UIActivityViewController) -> Any { return UIImage(named: ...) } func activityViewController(_ activityViewController: UIActivityViewController, itemForActivityType activityType: UIActivityType) -> Any? { return UIImage(named: ...) }}讲解
首先,密钥并不是真正敏感的,唯一的敏感密钥是电子邮件和支持它的应用程序的“主题”,它是在
UIActivityControllerAPI中实现的,我们可以直接对其进行设置。您提供
UIImage键“
image”还是“ 1” 都没关系。
事实证明,如果未在方法中 _ 直接_
返回其文本,则Twitter活动将不起作用
...itemForActivity...。因此,解决方案是分离物料来源。
如果未
placeholder收到Twitter活动,则Twitter活动也将不起作用,
String但通过返回
StringInstagram活动将不起作用,因此,通过返回
NSObject()Type将被忽略,并且所有服务将可用。如果您想限制某些服务的使用
UIActivityViewController.excludedActivityTypes



