ios - Swift 4 - UIActivityViewController 共享到 Outlook 主题和标题

标签 ios swift uiactivityviewcontroller

我正在使用 UIActivityViewController 将文本共享到 Outlook ,除了两件事,一切都工作正常,一是我无法设置主题行,二是我无法设置我正在分享的标题,我的文字是 html 表,目前在我的实现中显示了它的第一部分(参见屏幕截图),尽管我想显示一个预览标题。

有没有办法设置标题 以及设置 的方法主题 ?

这是我的代码:

let activityViewController = UIActivityViewController(activityItems : [htmlString], applicationActivities: nil)

activityViewController.popoverPresentationController?.barButtonItem = self.shareButton

self.present(activityViewController, animated: true, completion: nil)

我试图这样设置主题:
activityViewController.setValue("This is my subject", forKey: "subject")

但它没有用

我究竟做错了什么?

这是我正在谈论的标题的屏幕截图:

enter image description here

但它没有用

最佳答案

无论哪个 View Controller 触发了共享,都应该符合 UIActivityItemSource用于设置的协议(protocol):预览标题 , 邮件主题 还有邮件内容 .

你可以试试你自己这个例子,它触发按钮点击共享:

class ViewController: UIViewController, UIActivityItemSource {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    @IBAction func sharePressed(_ sender: Any) {
        let item = [self, "Preview Title"] as [Any]

        let activityViewController = UIActivityViewController(activityItems: item, applicationActivities: nil)

        self.present(activityViewController, animated: true, completion: nil)
    }

    func activityViewControllerPlaceholderItem(_ activityViewController: UIActivityViewController) -> Any {
        return ""
    }

    func activityViewController(_ activityViewController: UIActivityViewController, itemForActivityType activityType: UIActivity.ActivityType?) -> Any? {
        return "<html><body><p style=\"background-color: red;\">Email body message with red background</p></body></html>"
    }

    func activityViewController(_ activityViewController: UIActivityViewController, subjectForActivityType activityType: UIActivity.ActivityType?) -> String {
        return "Email Subject"
    }

}

要获得此预期输出:




不同 iOS 版本(iOS 11、iOS 12..)中的 Outlook 和 Gmail 等某些应用程序的行为不同:有些人将正文的第一行设置为主题。只需确保针对您所针对的 iOS 版本和您希望共享功能正确运行的应用程序进行测试。也可以设置多个 itemForActivityType共享时针对不同应用程序的目标逻辑。

关于ios - Swift 4 - UIActivityViewController 共享到 Outlook 主题和标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59328765/

相关文章:

swift - 使用 UIActivityViewController 共享您的设备屏幕

ios - 使用 UITabBarController 但不使用 UINavigationController 时返回上一个 ViewController

iphone - EXC_BAD_ACCESS 使用 [UIView animateWithDuration :animations:completion]

ios - 在不显示 View Controller 的情况下使用 MFMailComposeViewController

swift - 使用 Core Data 获取、更新和保存记录

ios - 具有备用文件名的 UIActivityViewController?

ios - UIActivityViewController 需要很长时间才能呈现

iphone - 用于调用的 iOS 原生 iPhone 按钮

ios - swift 的动态类名

ios - Swift - AVPlayer 通过 UISlider 取得进展