我在MyActivityItemProvider
写了这段代码,
[sharedObject objectForKey:@"Mail"]
NSArray
包含NSAttributedString
和NSURL
,用于移动存储中的本地文件,
我无法分享两者,
请帮助任何人
- (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType
{
if([activityType isEqualToString:UIActivityTypeMail])
{
if ([sharedObject objectForKey:@"Mail"])
{
return [sharedObject objectForKey:@"Mail"][0];
}
}
}
答案 0 :(得分:0)
您应该可以使用 NSTextAttachment
类直接插入要发送到NSAttributedString
的文件。
此处忽略了NSTextAttachments。
虽然UIActivityItemProvider
似乎只能表示单个可共享项(不允许返回数组),但您可以拥有多个UIActivityItemProvider
。
初始化UIActivityViewController
时,只需传递2个不同的项目即可。这是一个示例,我在单个UIActivityItemProvider
子类上使用了一个属性来确定它是否应该返回正文或附件。
MyItemSource *itemSourceBody = [[MyItemSource alloc] init];
itemSourceBody.returnAttachment = NO;
MyItemSource *itemSourceAttachment = [[MyItemSource alloc] init];
itemSourceBody.returnAttachment = YES;
UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:@[itemSourceBody, itemSourceAttachment] applicationActivities:nil];
[self presentViewController:activityVC animated:YES completion:nil];
当returnAttachment
为false时,它返回电子邮件正文;如果为true,则返回本地存储的PDF的URL。
这只是一个例子,并没有很好的架构。
此外,如果您不需要进行大量自定义,则可以直接使用UIActivityViewController
和NSAttributedString
而不是NSURL
中间人初始化UIActivityItemProvider
。