我想设置电子邮件共享的主题UIActivityViewController
,也想在Twitter中共享。我在Twitter上知道是否要共享-我们需要将文本压缩到140个字符。我检查了许多SO解决方案,但没有任何效果。
最新的iOS版本中已解决此问题吗?还有其他“可行的解决方案”吗?
Answers:
似乎emreoktem的解决方案(发送setValue:forKey:
至)UIActivityViewController
没有记录。
在iOS 7及更高版本上,您可以activityViewController:subjectForActivityType:
在符合UIActivityItemSource
协议的对象中实现该方法,从而以已记录的方式进行操作。
activityViewController:subjectForActivityType:
是正确的解决方案。奇怪的是,iOS Mail应用程序正确使用了该主题,但Google Inbox也使用该主题的消息(不是通过提供的主题subjectForActivityType
)
UIActivityViewController
Gmail应用未启动可能并非错误activityViewController:subjectForActivityType:
。
检查以下代码以设置您的电子邮件主题的电子邮件:
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:@“您的电子邮件主题”为键:@“主题”];
如果用户在UIActivityViewController中选择电子邮件选项,则将主题设置为“您的电子邮件主题”。
希望对您有帮助...
这是基于公认答案的Swift 3.0+的具体解决方案。请注意,与接受的答案一样,已知此方法仅在iOS Mail应用程序上有效,而不一定在其他应用程序上有效。
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)
Gmail
应用程序,而仅适用于ios Mail app
。Gmail上主体被示出的相同的消息主题
对于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)