Ios Swift 4-UIActivityViewController与Outlook主题和标题的共享

Ios Swift 4-UIActivityViewController与Outlook主题和标题的共享,ios,swift,uiactivityviewcontroller,Ios,Swift,Uiactivityviewcontroller,我正在使用UIActivityViewController将文本共享到Outlook,一切正常,除了两件事,一件事我无法设置主题行,另一件事我无法设置我共享的标题,我的文本是html表,它当前显示在我的实现中的第一部分(见屏幕截图)虽然我想展示一个预览标题 有没有办法设置标题和主题 这是我的密码: let activityViewController = UIActivityViewController(activityItems : [htmlString], applicationActiv

我正在使用
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")
但它不起作用

我做错了什么

这是我刚才提到的标题的截图:


但它不起作用

无论是哪个视图控制器触发共享,都应该符合
UIActivityItemSource
协议,以便设置:预览标题电子邮件主题以及电子邮件的内容

您可以尝试一下您自己的例子,点击按钮即可触发共享:

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"
    }

}
类ViewController:UIViewController,UIActivityItemSource{
重写func viewDidLoad(){
super.viewDidLoad()
//加载视图后执行任何其他设置。
}
@iAction func sharePressed(\发送方:任何){
让项目=[self,“预览标题”]作为[Any]
让activityViewController=UIActivityViewController(activityItems:item,applicationActivities:nil)
self.present(activityViewController,动画:true,完成:nil)
}
func activityViewControllerPlaceholderItem(activityViewController:UIActivityViewController)->任意{
返回“”
}
func activityViewController(activityViewController:UIActivityViewController,itemForActivityType activityType:UIActivity.activityType?->任何{
返回“

带有红色背景的电子邮件正文信息 } func activityViewController(activityViewController:UIActivityViewController,subjectForActivityType activityType:UIActivity.activityType?->String{ 返回“电子邮件主题” } }

要获得此预期输出:


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

这解决了我的预览问题,但没有解决我的主题行问题subjectForActivityType未被调用这可能是与Outlook应用程序共享时的一个问题?实际上我没有试过,只是试过iOS电子邮件应用程序。也许你能看看你在这篇stackoverflow帖子的评论中提到的那个问题:可能是同样的情况吗?我想你是对的……哦,人们可以输入自己的主题行。我安装了outlook,但它没有显示在列表中,你能帮上忙吗?