ios - Swift 4 - UIActivityViewController 共享到 Outlook 主题和标题
问题描述
我正在使用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"
}
}
要获得此预期输出:
不同 iOS 版本(iOS 11、iOS 12..)中的 Outlook 和 Gmail 等一些应用程序的行为不同:有些应用程序将正文的第一行设置为主题。只需确保针对您所针对的 iOS 版本和您希望共享功能正确运行的应用程序进行测试。您还可以在共享时为不同的应用程序设置多个itemForActivityType
目标逻辑。
推荐阅读
- sql - SQL Server:从多个表中选择并计算百分比
- php - spatie medialibrary 为每次转换定义后备图像
- python - 为什么我的 python 脚本没有创建 GNUPG 加密文件?
- java - 错误:来自 Spring Data Jpa 的列名 id 无效
- facebook - 使用 Facebook Job Application 停止 Dialogflow
- pandas - 不同索引 Pandas Dataframe 的多重比较
- jmeter - Jmeter:如何上传具有不同数据的动态excel文件并使用Jmeter进行负载测试
- javascript - 使用动态导入的模块运行已编译的打字稿项目时出错
- python - 如何计算整数的各个数字的总和并在最后打印原始整数?
- python - “元组”对象在 python、jupyter 中不可调用