通过 UIPasteBoard 在短信中粘贴图像

Posted

技术标签:

【中文标题】通过 UIPasteBoard 在短信中粘贴图像【英文标题】:Pasting image in sms through UIPasteBoard 【发布时间】:2011-04-14 12:56:25 【问题描述】:

我正在尝试将我的应用中的一些图像粘贴到 SMS 中。

UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
NSString *imagefile = [[NSBundle mainBundle] 
                       pathForResource:@"imagename"]
                       ofType:@"png"];
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:imagefile];

if (fileExists)    
    UIImage *ui = [[UIImage alloc] initWithContentsOfFile:imagefile];
    pasteboard.image = ui;
    [ui release];

在调试模式下,我发现该图像确实存在,并且它确实进入了粘贴板(我检查了它我引入了一个带有粘贴板图像的图像视图,这是必要的)。

保存到剪贴板后,我调用

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms:"]];

它确实会弹出,但是当我点击那里的“文本字段”时,没有显示粘贴按钮。 有人可以指出我的错误吗? 或者这样做有意义吗?我的意思是,是否可以通过默认 iPhone 消息应用发送图像?

【问题讨论】:

抱歉,兄弟跑题了……但告诉我一件事……可以在短信中粘贴“任何图像”吗?因为你必须在解码端有相同的软件。我的意思是在接收端..对吗?? 我认为这很有趣:我确信 100% 几天前,当我刚刚实施此选项时,它确实有效。弹出默认的 iPhone 消息应用程序后,我正在粘贴图像,它就像一个灰色的框架。我看到它正在工作并且我正在开发其他东西,现在,在测试时,我发现它不起作用。我不确定,我会稍微编辑一下我的 Q。 对不起 Dumoko...但我只是在研究这件事...但我发现...当您收到消息时,您需要解码字符并显示相应的该角色的图像。例如,如果您收到消息 :-) 它是 ':'、'-' 和 ')',然后显示笑脸图像......对于不同的消息,类似的不同情绪。您需要维护该字符集的字符集和相应图像的列表......所以如果接收者端的人没有像你这样的应用程序,那怎么可能......我认为在另一端无法解码... How to attach Image with message via iPhone application? 的可能重复项 【参考方案1】:

只有当粘贴板包含您点击的当前对象(此处为文本字段)支持的项目时,才会显示“粘贴”操作。您似乎只将图像添加到粘贴板。文本字段不支持图像。所以“粘贴”动作不会出现。

【讨论】:

【参考方案2】:

我有这个工作。我只是使用 setData 为其提供原始数据,然后使用 forPasteboardType 设置数据类型。就在你的下方

    if (fileExists)

试试这个

    NSData *data = [NSData dataWithContentsOfFile:imagefile];
    [pasteboard setData:data forPasteboardType:@"public.png"];            

您可以查找不同的 PasteboardType UTI here.

【讨论】:

【参考方案3】:

这段代码运行良好:

UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"imageName"]];
[[UIPasteboard generalPasteboard] setImage:image];

【讨论】:

以上是关于通过 UIPasteBoard 在短信中粘贴图像的主要内容,如果未能解决你的问题,请参考以下文章

iOS8 自定义键盘 - 复制和粘贴到 UIPasteboard

Objective-C:将图像从文件复制到设备粘贴板

从 UIPasteboard 获取复制的数据

尽管“hasStrings”为真,但 UIPasteBoard“string”属性返回 nil

可以从 Safari 访问 UIPasteBoard 吗?

Facebook SDK 与文本共享图像