我为我的UIActivityViewController子类化UIActivityItemProvider,这样当用户选择UIActivityTypeMessage时,它只会显示一条消息,但如果用户选择UIActivityTypeFacebook,它将显示带有图像的消息。
这是我的代码,我只能返回带有UIActivityTypeMessage的消息,但对于UIActivityTypeFacebook,我不知道如何返回带有Image的消息。
- (id)item
{
if ([self.placeholderItem isKindOfClass:[NSString class]]) {
if ([self.activityType isEqualToString:UIActivityTypeMessage]) {
return [NSString stringWithFormat:@"%@\n%@",self.text,self.url];
} else {
NSDictionary *d = [[NSDictionary alloc] initWithObjects:@[self.text,self.image] forKeys:@[@"text",@"image"]];
return d;
}
}
return self.placeholderItem;
}
我是否可以使用UIActivityItemProvider设置消息,网址和图片的特定键和值?
作为更新,我在UIActivity Class Reference中读到了特定活动类型的常量。不知道如何使用它们。有人可以开导我吗?
* UIActivityTypePostToFacebook对象将提供的内容发布到 用户在Facebook上的墙。
使用此服务时,您可以提供 NSString,NSAttributedString, UIImage,ALAsset和NSURL 对象作为活动项的数据。 您还可以指定其内容使用的NSURL对象 资产 - 图书馆计划。
答案 0 :(得分:3)
您需要创建3个单独的活动提供程序,每个数据类型对应一个,并在initWithActivityItems:applicationActivities:
上的UIActivityViewController
函数中传递所有这些提供程序。
这些活动使用了您提供的所有提供程序,UIActivityViewController
隐藏了任何不支持所有提供程序的提供程序(例如,在某些情况下可能难以仅包含图像)。