Ios 如何在UIActivityViewController中设置邮件主题?

Ios 如何在UIActivityViewController中设置邮件主题?,ios,objective-c,email,uiactivityviewcontroller,subject,Ios,Objective C,Email,Uiactivityviewcontroller,Subject,我想在UIActivityViewController中设置电子邮件共享的主题,还想在Twitter中共享。我知道在Twitter上,如果我们想分享,我们需要将文本压缩到140个字符。我检查了这么多的解决方案,但都不起作用 这个问题在最新的iOS版本中已经修复了吗?任何其他“工作解决方案”?检查以下电子邮件代码,以设置电子邮件主题: UIActivityViewController* avc = [[UIActivityViewController alloc] initWithActivity

我想在
UIActivityViewController
中设置电子邮件共享的主题,还想在Twitter中共享。我知道在Twitter上,如果我们想分享,我们需要将文本压缩到140个字符。我检查了这么多的解决方案,但都不起作用


这个问题在最新的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:@“您的电子邮件主题”forKey:@“主题”]

如果用户在UIActivityViewController中选择电子邮件选项,则将主题设置为“您的电子邮件主题”


我希望这会有所帮助……

似乎emreoktem将
setValue:forKey:
发送到
UIActivityViewController
的解决方案没有记录在案


在iOS 7及更高版本上,您可以在符合
UIActivityItemSource
协议的对象中实现
activityViewController:subjectForActivityType:
方法,以文档化的方式执行此操作。

适用于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)

以下是基于公认答案的Swift 3.0+的具体解决方案。请注意,与公认的答案一样,这只适用于iOS邮件应用程序,不一定适用于其他应用程序

实施: 用法: 下面是一个用法示例。请注意,将此项用作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)


[activityVC setCompletionHandler:^(NSString*activityType,BOOL completed){if([activityType IsequalString:UIActivityTypeMail]){NSLog(@“选定邮件类型”);[activityVC setValue:@“共享!”forKey:@“主题”];}}];它不起作用@Meenu您应该在完成处理程序之前设置主题。这在iOS8中似乎不起作用,还有其他方法吗?这和activityViewController:subjectForActivityType:将电子邮件主题和导航栏标题设置为同一个字符串令人烦恼。如果有一个官方的、有文档记录的方式来做这件事,那就太好了。但是当我打开gmail应用程序时,邮件主题并没有显示出来。我在gmail主题部分得到了正文内容没有任何帮助。只要检查我下面的评论,让我知道我是否错过了正确的方式。谢谢是的,
activityViewController:subjectForActivityType:
是正确的解决方案。奇怪的是,iOS邮件应用程序正确地使用了主题,但Google Inbox也使用了主题的消息(不是通过
subjectForActivityType
提供的主题)@LeslieGodwin你找到通过gmail共享的解决方案了吗?@Timcurb尽管我已经尝试了上述方法,但通过gmail共享仍然存在问题。请帮忙resolve@jalakpatel我不知道你在问什么。你在谷歌Gmail应用程序上分享什么吗?在这种情况下,Gmail应用程序没有拾取
activityViewController:subjectForActivityType:
,这可能不是
UIActivityViewController的故障。谢谢,这是正确的答案。我为Swift 3+添加了一个具体的类,我发现这个类非常有用。这对共享网站链接有用吗?比如[title,content,link],或者URL必须是内容本身的一部分,并让电子邮件客户端对其进行解析并使其可点击吗?根据接受的答案,这是没有文档记录且不可靠的。一个建议是将“title”从objectsToShare中删除,因为在setValue中添加title会设置电子邮件中的主题。以下解决方案不适用于
Gmail
应用程序,但仅适用于
ios邮件应用程序。在Gmail上,主体被显示为与消息主题相同的真实Gal,就像它所基于的公认答案一样。我添加了一条注释,使其更加明确。类名应该以大写字母开头。
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)