2012-02-02 3 views
3

copier un vcard (inclus dans le forfait) à la table de montage générale suivante:Coller une vCard de UIPasteBoard dans Courrier

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"AM" ofType:@"vcf"]; 
NSData *data = [NSData dataWithContentsOfFile:filePath]; 
[[UIPasteboard generalPasteboard] setData:data forPasteboardType:(NSString*)kUTTypeVCard]; 

Je voudrais ensuite l'utilisateur de pouvoir le coller dans un email. Cependant, Mail n'offre pas l'option Coller lorsque celle-ci a été copiée dans la table de montage. Est-ce que je fais quelque chose de mal ou est-ce que Mail ne reconnaît pas ce type de tableau?

Répondre

0

Vous pouvez simplement l'ajouter directement au message comme si

MFMailComposeViewController *mailViewController = [[MFMailComposeViewController alloc] init]; 
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"AM ofType:@"vcf"]; 
NSData *data = [NSData dataWithContentsOfFile:filePath]; 
[mailViewController addAttachmentData:data mimeType:@"text/vcard" fileName:@"AM.vcf"]; 
mailViewController.mailComposeDelegate = self; 
[self presentModalViewController:mailViewController animated:YES]; 
[mailViewController release]; 
+0

Merci, mais vous répondre à une question qui n'a pas été posée. De plus, vous spécifiez le mauvais type mime dans votre réponse - il devrait être texte/vcard – RunLoop

+0

désolé, j'ai mal compris votre question. Je pensais que vous vouliez qu'il soit copié sur leur presse-papiers et ensuite les faire coller dans un MFMailComposeViewController et j'ai édité le mime. – shabbirv

0

Tout dans votre code semble correct, donc si Mail ne vous permettra pas de le coller, cela signifie que le courrier ne supporte pas coller ce type .

Edit: essayez avec un NSDictionary:

UIPasteboard *gpBoard = [UIPasteboard generalPasteboard]; 

NSData *data = [NSData dataWithContentsOfFile:filePath]; 

NSDictionary *item = [NSDictionary dictionaryWithObjectsAndKeys: 
         data, (NSString *)kUTTypeVCard, 
         nil]; 

gpBoard.items = [NSArray arrayWithObjects:item, nil]; 
+0

J'ai compris qu'il est effectivement possible de coller une vcard dans un mail car j'ai copié une vcard dans un autre email et je l'ai collé dans un nouveau mail. La question n'est donc pas si mais comment. – RunLoop

+0

Voir modification. Vous pouvez essayer d'ajouter du code à coller dans la vcard de travail afin de pouvoir l'inspecter. –

+0

ne fonctionne pas non plus – RunLoop