2017-08-10 31 views
1

当用户想要使用UIActivityController共享图像时,我正在发送图像和文本。 这适用于电子邮件和Gmail,但它会搞砸whatsapp或Skype(只发送文本)。 所以我想要做的就是分享图片网址和文字,如果用户选择作为whatsapp或Skype的活动。这可能吗?根据所选活动共享不同内容 - UIActivityController

我搜索了这个问题,发现你应该分类UIActivityItemProvider,并实现我所做的UIActivityItemSource的方法,但我无法获得实现方法的回调。

我已经实现了这些方法 activityViewControllerPlaceholderItem:activityViewController:itemForActivityType: ,但我没有收到回调。

回答

2

只是使UIActivityItemProvider一个子类,并覆盖item财产,为自activity items,即

class CustomActivityItemProvider: UIActivityItemProvider 
{ 
    override var item: Any{ 
     switch self.activityType! 
     { 
     case UIActivityType.postToFacebook: 
      return "Hello" 
     default: 
      return "Whatever" 
     } 
    } 
} 

使用它:

let activityItem = CustomActivityItemProvider(placeholderItem: "") 
let activityViewController = UIActivityViewController(activityItems: [activityItem], applicationActivities: nil) 
self.present(activityViewController, animated: true, completion: nil) 

此外,你可以自定义只有那些UIActivityType,被暴露由Apple供开发人员使用。对于UIActivityTypes参考:https://developer.apple.com/documentation/uikit/uiactivitytype

+0

完美和“迅速”的答案。所以显然我不需要重写协议方法,如果我想传递基于活动类型的自定义数据。 –

+0

Sure..Enjoy .. :) – PGDev

+0

你想要改变什么? – PGDev