我想将HTML从我的应用程序传输到iPhone邮件应用程序。 我已经有了HTML文本 - 至少说< span style ='color:red'> Test< / span> 我可以将它放到UIPasteBoard上 - 但是当我将它粘贴到邮件中时,我得到了html源代码。
当我在HTMLView中放置相同的字符串时 - 在那里选择并复制它,在邮件中粘贴为红色文本。
我需要做什么才能将字符串放在UIPasteBoard中,以便将其作为红色文本粘贴到邮件应用程序中? 我一直在寻找“格式类型” - 并且发现当我在剪贴板中有元素(从UIWebView复制)时,UIPasteBoard返回“Aplle Web Archive粘贴板类型”。 但是在将内容添加到UIPasteBoard时将其设置为类型会在邮件应用程序中粘贴任何内容。
曼弗雷德
答案 0 :(得分:8)
事实并非如此。你可以将任何东西粘贴到粘贴板上,去阅读文档。
我最后整理了一个教程,展示了如何将HTML复制到Mail应用程序中。 http://mcmurrym.wordpress.com/2010/08/13/pasting-simplehtml-into-the-mail-app-ios/
答案 1 :(得分:2)
在您在评论中提供的相同链接上,您会在顶部找到此段落。
统一类型标识符(UTI)经常用于表示类型(有时称为粘贴板类型)。 例如,您可以使用kUTTypeJPEG(public.jpeg的常量)作为JPEG数据的表示类型。但是,应用程序可以自由地使用他们想要的任何字符串作为表示类型;但是,对于特定于应用程序的数据类型,建议您使用反向DNS表示法来确保该类型的唯一性(例如,com.myCompany.myApp.myType)。
其中解释了UTI。
当然,该列表不是所有类型,因为您可以创建自己的类型。
我已成功将html粘贴到邮件应用中。我会给你一个好的开始......
创建一个将在粘贴板中显示数据类型的应用。在设备上转到Safari,复制网页。运行您的应用程序,您会注意到粘贴板类型是“Apple Web Archive粘贴板类型”。请注意,这实际上是一种粘贴板类型(自定义类型)。如果您尝试通过创建Web存档并尝试将其作为文本粘贴到邮件应用程序中来自行复制Safari移动复制和粘贴功能,则会将Web存档文件显示为原始xml。如果您将类型定义为“Apple Web Archive粘贴板类型”,则邮件应用程序实际上会将粘贴格式设置为html。
如果您想知道网络存档的样子。在桌面游戏中,只需将网页保存为存档,然后在文本阅读器中查看文件(文本编辑将尝试解析它,因此您可以使用其他程序查看存档xml)。
请阅读所有文档,因为您可以发现您可以在发送给我的链接中执行自定义类型。
答案 2 :(得分:2)
我已经开始使用HTML副本,因此它可以正确地粘贴到内置的Mail和Notes应用程序中。它看起来像这样:
NSString *htmlContent = @"This is <span style='font-weight:bold'>HTML</span>";
NSString *content = @"This is HTML!";
NSDictionary *dict = @{(NSString *)kUTTypeText: content, (NSString *)kUTTypeHTML: htmlContent};
[[UIPasteboard generalPasteboard] setItems:@[dict]];
要访问这些类型常量,您需要导入:
#import <MobileCoreServices/UTCoreTypes.h>
答案 3 :(得分:0)
绝对有可能。 UIPasteboard
通常包含多个值,由它们的 UTI 索引。
这是一个如何将 public.html
作为主要类型的工作示例。
-(NSString * _Nullable) getHtmlFromPB {
static NSArray * prefs = @[@"public.html",@"public.utf8-plain-text",@"public.plain-text"];
if (!UIPasteboard.generalPasteboard.hasStrings) return nil;
for (NSString * theone in prefs) {
if ([[UIPasteboard generalPasteboard].pasteboardTypes indexOfObject:theone] == NSNotFound) continue;
return [UIPasteboard.generalPasteboard.items.firstObject objectForKey:theone];
}
return nil;
}
如果您需要说明:prefs
数组包含按所需顺序粘贴板内容的首选 UTI。所以,要么需要其中之一,要么什么都不做。
答案 4 :(得分:-13)
不,它不能。 UIPasterBoard只接受字符串,图像,URL和颜色。