2014-02-18 61 views
4

我回顾了一堆帖子在这里,许多在线教程/示例代码,我很难过。在我的应用程序中,我没有任何问题显示iOS7原生提供的UIActivityController以及适用于我的应用程序(AirDrop和邮件)的共享选项。iOS 7 UIActivityViewController电子邮件附件

我遇到的具体问题是当用户选择通过邮件共享选项时,将保存的文档附加到电子邮件中。邮件正文被设置为文本,但附件是MIA。相关代码是:

//生成要共享的XML文件以显示当前显示的记录... NSURL * url = [self createShareFile];

UIActivityViewController *controller = [[UIActivityViewController alloc] initWithActivityItems:@[@"Data shared from my app.", url] applicationActivities:nil]; 

// Filter out the sharing methods we're not interested in.... 
controller.excludedActivityTypes = @[UIActivityTypePostToTwitter, UIActivityTypePostToFacebook, 
           UIActivityTypePostToWeibo, 
           UIActivityTypeMessage, 
           UIActivityTypePrint, UIActivityTypeCopyToPasteboard, 
           UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll, 
           UIActivityTypeAddToReadingList, UIActivityTypePostToFlickr, 
           UIActivityTypePostToVimeo, UIActivityTypePostToTencentWeibo]; 

// Now display the sharing view controller. 
[self presentViewController:controller animated:YES completion:nil]; 

我错过了什么?我的文件正在正确创建,内容正确,并且NSURL对象包含文件的正确路径。

谢谢!

回答

6

问题解决了.....

发表在我原来的帖子中的代码是100%准确的。这个问题最终在我构建NSURL的方式是在我createShareFile方法的返回:

不正确的(原始的方式):

return [NSURL URLWithString:[docFile stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 

正确方法:

return [NSURL fileURLWithPath:docFile]; 

只要我修正了这个问题,它开始工作,即使使用我的自定义文件类型。

+0

你救了我的一天!非常感谢你分享这个! –