2013-06-10 3 views
56

Я хочу установить тему для обмена электронной почтой в UIActivityViewController, а также хочу поделиться в Twitter. Я знаю в Twitter, если мы хотим поделиться - нам нужно сжать текст до 140 символов. Я проверил многие решения SO, но ничего не работает.Как настроить почтовый объект в UIActivityViewController?

Является ли эта проблема исправлена ​​в последних выпусках iOS? Любые другие «рабочие решения»?

+0

Нет, это впадина. Просто проверьте мой комментарий ниже и дайте мне знать, если я упустил правильный путь. спасибо – Femina

ответ

76

Кажется, как будто emreoktem решение которого отправки setValue:forKey: к UIActivityViewController -is документированы.

На iOS 7 и более поздних версиях вы можете реализовать метод activityViewController:subjectForActivityType: в объекте, соответствующем протоколу UIActivityItemSource, чтобы сделать это документированным способом.

+4

Да, 'activityViewController: subjectForActivityType:' является правильным решением. Странно, что приложение iOS Mail правильно использует объект **, но Google Inbox ** также использует сообщение для темы (не тема, предоставленная через 'subjectForActivityType') –

+1

@LeslieGodwin Вы нашли решение для совместного использования через gmail? –

+0

@TimCamber Несмотря на то, что я попытался сделать это, он все еще показывает проблему через совместное использование в gmail. Помогите решить –

86

Проверить ниже код для электронной почты для настройки вашей электронной почты Тема:

UIActivityViewController* avc = [[UIActivityViewController alloc] initWithActivityItems:@[@"Your String to share"] 
            applicationActivities:nil]; 
[avc setValue:@"Your email Subject" forKey:@"subject"]; 

avc.completionHandler = ^(NSString *activityType, BOOL completed) { 
    // ... 
}; 

Здесь линия

[АВК SetValue: @ "Ваш E-mail Тема" forKey: @ "предмет"] ;

Представляет предмет как «Ваш вопрос по электронной почте», если пользователь выбирает параметр электронной почты в UIActivityViewController.

Я надеюсь, что это помогает ...

+0

Добро пожаловать :) – emreoktem

+1

[activityVC setCompletionHandler:^(NSString * activityType, BOOL завершен) { if ([activityType isEqualToString: UIActivityTypeMail]) { NSLog (@ «Тип почты выбран»); [активностьVC комплектValue: @ "Share!" forKey: @ "предмет"]; } }]; Его не работает emreoktem! – Femina

+0

@Meenu Вы должны установить объект * перед * обработчиком завершения. – colinta

12

Для Swift 2.0+ & ИОС 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) 
+0

делает это для обмена ссылкой на веб-сайт?например [title, content, link] или URL должен быть частью самого контента и позволить почтовому клиенту проанализировать его и сделать его интерактивным? – gadget00

Смежные вопросы