ios - 通过 AirDrop 发送 PDF 时命名文件

标签 ios objective-c cocoa-touch pdf

如果在 iOS 7 中通过 AirDrop 发送从应用程序生成的 PDF,关于如何设置文档标题有什么想法吗?

平时搜索SO和文档都没有回答我的问题

 NSString *fileName = [NSString stringWithFormat:@"userCert_%@",self.certificate.reference];

 NSData *cert = self.pdfData;

     UIActivityViewController *activityCtr = [[UIActivityViewController alloc] initWithActivityItems:@[cert]
                                                                              applicationActivities:nil];


 NSMutableArray *excludedActivities = [self iOS6Activities].mutableCopy;
    [excludedActivities addObject:UIActivityTypeAddToReadingList];
    [excludedActivities addObject:UIActivityTypePostToFlickr];
    [excludedActivities addObject:UIActivityTypePostToTencentWeibo];
    [excludedActivities addObject:UIActivityTypePostToVimeo];
    [activityCtr setExcludedActivityTypes:excludedActivities];

    [self presentViewController:activityCtr
                       animated:YES
                     completion:nil];

最佳答案

如果要共享NSData,必须将其包装在一个符合UIActivityItemSource协议(protocol)的对象中,并实现可选的协议(protocol)方法activityViewController:dataTypeIdentifierForActivityType:。然而,这不会解决指定文件名的问题,因为在这种情况下系统将根据 UTI 和一些哈希生成文件名。

如果您将数据写入文件并共享一个 NSURL 文件 URL 而不是 NSData,您为文件提供的文件名将被使用,这就是接收设备上警报中显示的内容。即使在这种情况下,也可能值得将 URL 包装在符合 UIActivityItemSource 的对象中,因为它使您能够使用可选协议(protocol)方法 activityViewController:thumbnailImageForActivityType:suggestedSize: 提供预览图像等内容。

关于ios - 通过 AirDrop 发送 PDF 时命名文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19277460/

相关文章:

ios - didReceiveRemoteNotification 和 didFinishLaunchingWithOptions 的果酱 Hook

ios - Xamarin Forms iOS 状态栏文本颜色

iphone - Cocos2D 复杂动画

ios - 如何将另一个 UIViewController 添加到现有的 UINavigationController

ios - 如何在非空NSMutableArray的开头添加NSArray的内容?

ios - 显示事件的容器 View

iphone - CoreData 向实体行添加新关系

ios - 如何在 iOS 上播放电影

ios - 如何在 NSMutableArray 中使用循环在任何索引处获取对象

objective-c - UIDocument openWithCompletionHandler 成功返回 NO