2013-06-10 8 views
56

Ich möchte Betreff für E-Mail-Sharing in UIActivityViewController festlegen und auch in Twitter teilen möchten. Ich weiß in Twitter, wenn wir teilen wollen - wir müssen Text auf 140 Zeichen komprimieren. Ich habe viele SO-Lösungen überprüft, aber nichts funktioniert.Wie legen Sie einen E-Mail-Betreff in UIActivityViewController fest?

Wird dieses Problem in den neuesten iOS-Versionen behoben? Irgendwelche anderen "Arbeitslösungen"?

+0

Nein, es vermöge. Überprüfen Sie einfach meinen Kommentar unten und lassen Sie mich wissen, wenn ich den richtigen Weg vermisse. Danke – Femina

Antwort

76

Es scheint, als ob emreoktem der-Lösung sendet setValue:forKey: zum UIActivityViewController undokumentiert -ist.

auf iOS 7 und höher können Sie die activityViewController:subjectForActivityType: Methode in einem Objekt implementieren, um das UIActivityItemSource Protokoll entspricht dies in einer Art und Weise zu tun, die dokumentiert ist.

+4

Ja, activityViewController: subjectForActivityType: 'ist die richtige Lösung. Seltsamerweise verwendet die iOS Mail App das Thema korrekt **, aber Google Inbox ** verwendet die Nachricht auch für das Thema (nicht das Thema, das über 'subjectForActivityType' bereitgestellt wird) –

+1

@LeslieGodwin Haben Sie eine Lösung für die Freigabe per Google Mail gefunden? –

+0

@TimCamber Obwohl ich oben versucht habe, zeigt es immer noch Probleme durch die Freigabe in Google Mail. Bitte helfen Sie zu lösen –

86

prüfen unten Code für die E-Mail für Ihre E-Mail-Betreff einrichten:

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

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

Hier die Linie

[avc setValue: @ "Ihre E-Mail-Betreff" forKey: @ "Subjekt"] ;

Legt den Betreff als "Betreff Ihrer E-Mail" fest, wenn der Benutzer die E-Mail-Option im UIActivityViewController auswählt.

Ich hoffe, es hilft ...

+0

Sie sind willkommen :) – emreoktem

+1

[activityVC setCompletionHandler:^(NSString * activityType, BOOL abgeschlossen) { if ([activityType isEqualToString: UIActivityTypeMail]) { NSLog (@ "Mail type selected"); [activityVC setValue: @ "Teilen!" forKey: @ "Betreff"]; } }]; Es funktioniert nicht emreoktem! – Femina

+0

@Meenu Sie sollten den Betreff * vor * den Beendigungshandler setzen. – colinta

12

Für 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) 
+0

funktioniert dies für die Freigabe eines Links zu einer Website?wie [title, content, link] oder muss die URL Teil des Inhalts selbst sein und den E-Mail-Client analysieren lassen und klickbar machen? – gadget00

Verwandte Themen