【问题标题】:iOS 7 UIActivityViewController Email AttachmentsiOS 7 UIActivityViewController 电子邮件附件
【发布时间】:2014-02-18 23:38:40
【问题描述】:

我在这里查看了一堆帖子,无数在线教程/示例代码,我被难住了。在我的应用程序中,我可以毫无问题地显示 iOS7 原生提供的 UIActivityController 以及适合我的应用程序的共享选项(AirDrop 和邮件)。

我遇到的具体问题是,当用户选择通过邮件共享的选项时,将保存的文档附加到电子邮件中。邮件正文被设置为文本,但附件是 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 对象包含文件的正确路径。

谢谢!

【问题讨论】:

    标签: email ios7 attachment uiactivityviewcontroller airdrop


    【解决方案1】:

    问题解决了.....

    在我的原始帖子中发布的代码是 100% 准确的。问题最终出在我构建在 createShareFile 方法中返回的 NSURL 的方式上:

    不正确(原方式):

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

    正确方法:

    return [NSURL fileURLWithPath:docFile];
    

    我修复它后,它就开始工作了,即使是我的自定义文件类型。

    【讨论】:

    • 你拯救了我的一天!非常感谢您分享这个!
    【解决方案2】:

    我遇到了类似的问题,邮件应用程序是唯一一个我无法添加 pdf 的应用程序。这是我在 Swift 中的代码以及处理 iPad 弹出窗口的代码。

    var filesToShare = [Any]()
    filesToShare.append(self.myUrl)
    
    let activityViewController = UIActivityViewController(activityItems: filesToShare as [Any], applicationActivities: nil)
    present(activityViewController, animated: true)
    
    // for iPad -> where to present on screen
    if let popOver = activityViewController.popoverPresentationController {
        //action button being my top left icon
        popOver.barButtonItem = self.actionButton
    }
    

    我的问题也是处理 URL 的方式不同

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-15
      • 1970-01-01
      • 1970-01-01
      • 2014-08-15
      • 2013-06-05
      • 2016-11-30
      • 2010-11-26
      相关资源
      最近更新 更多