Как установить тему почты в UIActivityViewController?
Я хочу установить тему для обмена электронной почтой в UIActivityViewController
а также хочу поделиться в Twitter. Я знаю в Twitter, если мы хотим поделиться - нам нужно сжать текст до 140 символов. Я проверил много решений SO, но ничего не работает.
эта проблема исправлена в последних версиях iOS? Любые другие "рабочие решения"?
4 ответа:
похоже, что решение эмреоктема-отправка
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:@ "Your email Subject" forKey:@ "subject"];
делает тему как "ваша тема электронной почты", если пользователь выбирает опцию электронной почты в UIActivityViewController.
Я надеюсь, что это помогает...
для 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 и не обязательно в других приложениях.
реализация:
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)