根据所选活动共享不同内容 - UIActivityController

时间:2017-08-10 10:52:06

标签: ios swift uiactivityviewcontroller

目前,只要用户想要使用UIActivityController分享图片,我就会发送图片和文字。 这在电子邮件和Gmail上运行良好,但是它会被whatsapp或Skype搞砸(只发送文本)。 所以我想做的是分享图片网址和文本,如果用户选择活动为whatsapp或Skype。这可能吗?

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

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

1 个答案:

答案 0 :(得分:3)

只需创建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