我想在UIActivityViewController
中设置电子邮件分享的主题,同时也想在Twitter上分享。我知道在Twitter上如果我们想分享,需要将文本压缩到140个字符。我查看了许多SO解决方案,但都没有起作用。
这个问题在最新的iOS版本中是否已经解决?还有其他“有效的解决方案”吗?
我想在UIActivityViewController
中设置电子邮件分享的主题,同时也想在Twitter上分享。我知道在Twitter上如果我们想分享,需要将文本压缩到140个字符。我查看了许多SO解决方案,但都没有起作用。
这个问题在最新的iOS版本中是否已经解决?还有其他“有效的解决方案”吗?
检查以下代码以获取设置电子邮件主题的电子邮件:
UIActivityViewController* avc = [[UIActivityViewController alloc] initWithActivityItems:@[@"Your String to share"]
applicationActivities:nil];
[avc setValue:@"Your email Subject" forKey:@"subject"];
avc.completionHandler = ^(NSString *activityType, BOOL completed) {
// ...
};
这里是代码行:
[avc setValue:@"Your email Subject" forKey:@"subject"];
如果用户在UIActivityViewController中选择了电子邮件选项,则将主题设置为“您的电子邮件主题”。
希望有所帮助...
}]; 这段代码不起作用,emreoktem!
- Femina似乎emreoktem的解决方案——向UIActivityViewController
发送setValue:forKey:
——是没有文档记录的。
在 iOS 7 及之后的版本中,你可以通过实现符合 UIActivityItemSource
协议的对象中的 activityViewController:subjectForActivityType:
方法以一种有文档记录的方式来完成此操作。
activityViewController:subjectForActivityType:
是正确的解决方案。奇怪的是,iOS Mail 应用程序正确使用了主题,但Google Inbox也使用了消息作为主题(而不是通过subjectForActivityType
提供的主题)。 - Leslie GodwinactivityViewController:subjectForActivityType:
可能不是UIActivityViewController
的错。 - Tim Arnold根据被接受的答案,这里提供了一个基于Swift 3.0+的具体解决方案。请注意,与被接受的回答一样,这个方案已知仅适用于iOS邮件应用程序,并不一定适用于其他应用程序。
class MessageWithSubject: NSObject, UIActivityItemSource {
let subject:String
let message:String
init(subject: String, message: String) {
self.subject = subject
self.message = message
super.init()
}
func activityViewControllerPlaceholderItem(_ activityViewController: UIActivityViewController) -> Any {
return message
}
func activityViewController(_ activityViewController: UIActivityViewController, itemForActivityType activityType: UIActivityType) -> Any? {
return message
}
func activityViewController(_ activityViewController: UIActivityViewController,
subjectForActivityType activityType: UIActivityType?) -> String {
return subject
}
}
以下是一个使用示例。请注意,在activityItems数组中将其用作第一项并包含任何其他项目会很好地发挥作用:
let message = MessageWithSubject(subject: "Here is the subject", message: "An introductory message")
let itemsToShare:[Any] = [ message, image, url, etc ]
let controller = UIActivityViewController(activityItems: itemsToShare, applicationActivities: nil)
适用于Swift 2.0+和iOS 8.0+
let title = "Title of the post"
let content = "Content of the post"
let objectsToShare = [title, content]
let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)
activityVC.setValue(title, forKey: "Subject")
self.presentViewController(activityVC, animated: true, completion: nil)