Comment puis-je configurer les destinataires pour UIActivityViewController dans iOS 6?
Je suis en utilisant le nouveau UIActivityViewController
classe dans iOS6 pour fournir à l'utilisateur avec diverses options de partage. Vous pouvez passer un tableau de paramètres, tels que du texte, des liens et des images et il fait le reste.
Comment puis-je définir des destinataires? Par exemple le partage par mail ou SMS devrait être en mesure d'accepter les bénéficiaires, mais je ne vois pas comment appeler ce comportement.
Je ne veux pas avoir à utiliser MFMessageComposeViewController
et UIActivityViewController
séparément qui l'emporte sur tout le but de l'action du contrôleur.
Des suggestions?
UIActivityViewController De Référence De Classe
Edit: Ceci a été soumis à Apple et par la suite fusionné avec un double rapport de bug.
OriginalL'auteur MattCheetham | 2012-09-27
Vous devez vous connecter pour publier un commentaire.
Tout le crédit va ici à Emanuelle, depuis qu'il est avec la plupart du code.
Si je pensais que j'allais publier une version modifiée de son code qui permet de définir le destinataire.
J'ai utilisé une Catégorie sur MFMailComposeViewController
Pouvez-vous partager pleins d'exemple?
A cette travaillé pour quelqu'un? Si oui, pouvez-vous partager le code complet?
OriginalL'auteur thewormsterror
Pour l'ajout de sujet à l'e-mail à l'aide de UIActivityViewController sur iOS6, c'est la meilleure solution que n'importe qui peut utiliser.. Tout ce que vous avez à faire est d'appeler les éléments suivants lors de l'initialisation de UIActivityViewController.
Et votre UIActivityViewController est rempli avec un objet.
Cela semble fonctionner, mais est-il documenté?
Excellente solution à l'aide de KVO!
Comment au sujet de Destinataire? Pouvons-nous ajouter comme ça?
c'est l'ajout de l'objet dans le mail uniquement
OriginalL'auteur Ajay
Je viens de trouver une solution à ce problème (dans mon cas définir l'objet de l'e-mail):
en interne, la UIActivityViewController fera appel à un certain point le setMessageBody:isHTML: méthode de la MFMailComposeViewController classe, il suffit d'intercepter cet appel, et à l'intérieur de faire un appel à la setSubject: la méthode. Grâce à la "méthode swizzling" technique, il ressemble:
Appeler la ligne de code suivante avant d'utiliser UIActivityViewController:
Ensuite passer à l'UIActivityViewController personnalisé UIActivityItemProvider que pour UIActivityTypeMail renvoie une page HTML NSString comme:
Le sujet de l'email est extrait du titre HTML (utiliser du texte brut pour cette partie, aucune des entités html ou tags).
L'aide de cette méthode, je vous laisse élaborer un moyen élégant pour définir le destinataire du courrier.
OriginalL'auteur Emmanuel Paris
Alors qu'il n'apparaît qu'à l'heure actuelle la mailto: solution pour la configuration de l'objet du courriel et le corps ne fonctionne pas, ce serait, en tout cas pas être suffisant si tu voulais le corps de l'email à contenir du HTML et font encore l'utilisation de système Apple icône e-mail via UIActivityViewController.
C'est exactement ce que nous voulions faire: utiliser l'icône système, mais ont le courriel contenant un corps HTML et un objet personnalisé.
Notre solution a été quelque chose d'un hack, mais il fonctionne bien, au moins pour le moment. Il n'impliquent l'utilisation MFMailComposeViewController, mais encore, elle vous permet d'utiliser le système de messagerie icône avec UIActivityViewController.
Étape 1: Créer une classe wrapper conforme à la UIActivityItemSource comme suit:
Étape 2: sous-classe UIActivityViewController et d'en faire un MFMailComposeViewControllerDelegate comme suit:
REMARQUE: lorsque vous appelez
super initWithActivityItems
vous êtes d'emballage de l'objet que vous allez partager dans votre personnalisé ActivityItemSourceÉtape 3: Lancez votre propre MFMailComposeViewController au lieu de celui du système lorsqu'un utilisateur clique sur l'icône Courrier.
Vous voulez faire cela dans le
activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType
méthode dans le ActivityItemSource classe:Dans le
mailComposeControllerWithObject
méthode, vous devez créer une instance de la MFMailComposeViewController classe et de le configurer pour contenir toutes les données que vous voulez. Notez également que vous devez définir laactivityViewController
que la composition de la vue du délégué.La raison pour laquelle cela fonctionne est que lorsqu'un composer modale est affichée, il empêche les autres auxiliaires modaux s'affiche, c'est à dire vous de l'affichage de votre propre composent de vue blocs du système de composer vue d'être montré. Certainement un hack, mais il fait le travail.
Espère que cette aide.
MFMailComposeViewController *mailController = [ShareViewController mailComposeControllerWithObject: self.object withDelegate: activityViewController];
œuvres? Lorsque j'essaieMFMailComposeViewController *mailController = [[MFMailComposeViewController alloc] init]; mailController.delegate = activityViewController;
- je obtenirAttempt to present <MFMailComposeViewController: 0x1edbc610> on <ActivityViewController: 0x20037560> which is waiting for a delayed presention of <MFMailComposeViewController: 0x200368b0> to complete
erreurSalut zeroos, nous avons abandonné cette approche un peu tout à l'heure, il est donc possible qu'Apple a fermé cette lacune dans l'intervalle. Ce que la version iOS vous construisez? Vous pourriez essayer de construction pour le simulateur avec un ancien système d'exploitation, par exemple, 5.1, juste pour voir si c'est du OS.
Si vous avez, vous pouvez également essayer d'afficher le mailComposeView à partir d'un point de vue différent du contrôleur. Sans doute, qui doit toujours prévenir la norme mailComposeView d'apparaître.
Je suis sous iOS 6.1, à la simulation d'iOS 6.0 j'ai le même problème. UIActiveViewController n'était pas disponible en iOS 5.1, donc je suis à la recherche d'autres solutions.
Droit, UIActivityViewController est venu avec iOS6. Dans notre cas, nous avons fini par créer un équivalent de l'activité-vue-contrôleur, ce qui nous donne le plein contrôle sur la façon dont les icônes apparaissent et ce contenu est affiché dans la social points de vue que nous affichons.
OriginalL'auteur ilyashev
Vous devriez être en mesure d'inclure les bénéficiaires de l'aide d'un NSUrl objet avec la mailto: schéma (ou sms: pour les messages de texte).
De la UIActivity classe de référence:
Donc, quelque chose comme cela devrait fonctionner:
Hmm c'est bizarre. Pourriez-vous essayer de supprimer le texte de la activityItems tableau, et juste en passant la NSURL avec le mailto?
Vous pouvez étendre la mailto pour inclure le corps, par exemple avec mailto:[email protected][email protected]&subject=This%20is%20the%20subject&body=This%20is%20the%20body
Vous doit être capable de faire cela, mais vous ne pouvez pas. Et dans l'iOS 7 documentation de cette allégation au sujet de la
mailto:
URL est retirée. Elle n'a jamais travaillé comme annoncé.developer.apple.com/reference/uikit/... Lien vers la documentation: vous verrez que toute référence à l'aide de mailto: définir les destinataires a été supprimé
OriginalL'auteur henning77
Je ne suis pas sûr que sur les destinataires, mais il semble que dans iOS 7 et versions ultérieures, vous pouvez définir le sujet d'un e-mail en se conformant à la
UIActivityItemSource
protocole et la mise en œuvre de la méthodeactivityViewController:subjectForActivityType:
.OriginalL'auteur Tim Camber