8

我正在迁移以使用 UIActivityViewController 在 iOS6 中共享,但我不知道如何创建电子邮件附件对象以在通过电子邮件共享时包含在内。

iOS5中对应的代码为:

MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
[picker addAttachmentData:data mimeType:@"application/XXX" fileName:fileName];
4

3 回答 3

26

您对 UIActivityViewController 的控制非常有限,但如果您附加了众所周知的 mime 类型,我发现您可以通过在文件 URL 中提供关联的文件扩展名来使其正常工作。例如,如果您的附件是 vCard,请在文件 URL 中使用“.vcf”扩展名:

NSString *docsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
// The file extension is important so that some mime magic happens!
NSString *filePath = [docsPath stringByAppendingPathComponent:@"vcard.vcf"];
NSURL *fileUrl     = [NSURL fileURLWithPath:filePath];

[data writeToURL:fileUrl atomically:YES]; // save the file

// Now pass the file URL in the activity items array
UIActivityViewController *avc = [[UIActivityViewController alloc] initWithActivityItems:
    @[@"Here's an attached vCard", fileUrl] applicationActivities:nil];
[vc presentModalViewController:avc animated:YES];
于 2012-10-23T10:22:43.653 回答
2

对于想知道为什么他们的文件没有使用 UIActivityViewController 共享到 DropBox 和其他通用文件处理应用程序等应用程序的任何人,您真正想要的是 UIDocumentInteractionController。

像这样使用它:

class ViewController {
    var openInController:UIDocumentInteractionController!

    init() {
        openInController = UIDocumentInteractionController(URL: docURL)
    }

    func shareDoc {
        openInController.presentOptionsMenuFromRect(CGRectZero, inView: self.view, animated: true)
    }
}
于 2014-10-06T04:41:38.500 回答
0

据我所知,您无法使用 UIActivityViewController 执行此操作——我什至无法让它呈现消息正文的 HTML 内容——因此使用 SLComposeViewController 可能会更好。

于 2012-09-30T02:49:05.377 回答