Как установить тему письма в UIActivityViewController?
Я хочу установить тему для обмена электронной почтой в UIActivityViewController
а также хочу поделиться в твиттере. Я знаю в Твиттере, если мы хотим поделиться - нам нужно сжать текст до 140 символов. Я проверил много SO решений, но ничего не работает.
Исправлена ли эта проблема в последних версиях iOS? Любые другие "рабочие решения"?
4 ответа
Кажется, что решение Emreoktem - отправка setValue:forKey:
к UIActivityViewController
- не имеет документов.
В iOS 7 и более поздних версиях вы можете activityViewController:subjectForActivityType:
метод в объекте, соответствующем UIActivityItemSource
протокол, чтобы сделать это способом, который задокументирован.
Проверьте ниже код для электронной почты для настройки вашей темы электронной почты:
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:@"subject"];
Делает тему "Тема вашей электронной почты", если пользователь выбирает опцию электронной почты в UIActivityViewController.
Я надеюсь, что это помогает...
Вот конкретное решение для 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)