Objective c UIImage仅适用于所选应用程序活动,NSString适用于所有应用程序活动

Objective c UIImage仅适用于所选应用程序活动,NSString适用于所有应用程序活动,objective-c,uiimage,uiactivityviewcontroller,uiactivity,Objective C,Uiimage,Uiactivityviewcontroller,Uiactivity,我正在使用UIActivityViewController来共享NSString和UIImage,但我不想与iMessage和e-mail共享UIImage 如何为UIImage创建这样一个自定义UIActivity,并为所有人保留NSString?创建UIActivityViewController时,会传递一组活动项 在该数组中传递的对象可以是采用 如果您发送UIImage,为什么不创建一个“ImageItemProvider”对象,然后实现您自己的方法,如果您不想通过iMessage或电子

我正在使用UIActivityViewController来共享NSString和UIImage,但我不想与iMessage和e-mail共享UIImage


如何为UIImage创建这样一个自定义UIActivity,并为所有人保留NSString?

创建UIActivityViewController时,会传递一组活动项

在该数组中传递的对象可以是采用

如果您发送UIImage,为什么不创建一个“
ImageItemProvider
”对象,然后实现您自己的方法,如果您不想通过iMessage或电子邮件共享该图像,该方法将返回“
nil

例如:


我是根据这个答案来回答的。

这是一个想法,但UIImage是动态的(捕获视图),因此如果我创建一个新对象,UIActivityViewController将加载太长时间。我认为,最好的方法只是在主视图中编写代码,但我现在不知道如何:(如果生成要共享的内容可能需要一段时间,您可能需要考虑使用UIActivityItemProvider。
//- Returns the data object to be acted upon. (required)
- (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType
{
    if ([activityType isEqualToString:UIActivityTypeMail]) {
        return nil;
    }

    if ([activityType isEqualToString:UIActivityTypeMessage]) {
        return nil;
    }

    return [UIImage imageNamed:@"the image you wanted returned"];
}