ios - 根据选定的事件共享不同的内容 - UIActivityController

标签 ios swift uiactivityviewcontroller

目前,每当用户想要使用 UIActivityController 共享图像时,我都会发送图像和文本。 这在电子邮件和 gmail 上工作得很好,但在 Whatsapp 或 Skype 上却很困惑(仅发送文本)。 所以我想做的是,如果用户选择 Whatsapp 或 Skype 事件,则共享图像 url 和文本。这可能吗?

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

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

最佳答案

只需创建 UIActivityItemProvider 的子类并覆盖 item 属性即可提供自定义事件项,即

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)

此外,您只能自定义由 Apple 公开供开发人员使用的那些 UIActivityType。对于UIActivityTypes,请参阅:https://developer.apple.com/documentation/uikit/uiactivitytype

关于ios - 根据选定的事件共享不同的内容 - UIActivityController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45611696/

相关文章:

ios - 如何将苹果付款通知与我的自定义付款记录关联?

ios - 如何以编程方式填充 ScrollView 宽度

ios - 如何将 UIGestureRecognizer 附加到 icarousel swift 代码中的项目 View

ios - 从 UiActivityViewController 中排除自己的应用程序

ios - 将多个数据附加到 URLRequest 的 httpbody

ios - addArrangedSubview 与 addSubview

swift - 如何从matchedGeometryEffect 中移除/控制淡入淡出效果?

ios - 在我们完成 DispatchWorkItem 并尝试使用 DispatchQueue.main.async 更新 UI 后,UI View 项是否可能不再有效

ios - 图片下载会减慢 UIActivityViewController 的出现时间

ios - iPad 上的 UIActivityViewController 奇怪行为,App 未优化