UIImage 仅用于所选的 applicationActivities,但 NSString 用于所有 applicationActivities

Posted

技术标签:

【中文标题】UIImage 仅用于所选的 applicationActivities,但 NSString 用于所有 applicationActivities【英文标题】:UIImage only for the chosen applicationActivities, but NSString for all applicationActivities 【发布时间】:2014-02-03 20:53:35 【问题描述】:

我正在使用 UIActivityViewController 来共享 NSString 和 UIImage,但我不想与 iMessage 和电子邮件共享 UIImage。

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

【问题讨论】:

【参考方案1】:

当你创建你的 UIActivityViewController 时,你传递了一个活动项数组。

您在该数组中传递的对象可以是采用UIActivityItemSource protocol 的对象。

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

例如:

//- 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"];

我的回答是基于the code I found in this tutorial。

【讨论】:

这是一些想法,但 UIImage 是动态的(捕获视图),所以如果我创建一个新对象 UIActivityViewController 将加载太长时间。我认为,最好的方法是在主视图中简单地编写代码,但我现在不知道如何:( 如果生成要共享的东西可能需要一段时间,您可能需要考虑使用 UIActivityItemProvider。

以上是关于UIImage 仅用于所选的 applicationActivities,但 NSString 用于所有 applicationActivities的主要内容,如果未能解决你的问题,请参考以下文章

用于单选的所选插件的占位符文本不起作用

Android - 用于共享的选择器对话框 - 不同的意图取决于所选的应用程序?

如何在Swift中的UITableView中截取所选行的屏幕截图并将其保存为UIImage?

如何在Google Annotated Timeline上使用范围更改()来仅获取所选范围的数据?

python 获取所选的名称空间

将 UIImage 用于 UIImageView 时 UIImage 失真