4

我想将 HTML 从我的应用程序传输到 iPhone 邮件应用程序。我已经有了 HTML 文本 - 以免说 <span style='color:red'>Test</span> 我可以把它放到 UIPasteBoard - 但是当我将它粘贴到邮件时,我得到了 html 源代码。

当我在 HTMLView 中放置相同的字符串时 - 在那里选择它并将其复制为邮件中的红色文本。

我该怎么做才能将字符串放在 UIPasteBoard 中,以便将其作为红色文本粘贴到邮件应用程序中?我一直在搜索“格式类型”——当我在剪贴板中有元素(从 UIWebView 复制)时,发现 UIPasteBoard 返回“Aplle Web Archive 粘贴板类型”。但是在将内容添加到 UIPasteBoard 时将其设置为类型不会在邮件应用程序中粘贴任何内容。

曼弗雷德

4

5 回答 5

9

那不是真的。你可以将任何东西粘贴到粘贴板上,去阅读文档。

我终于整理了一个教程,展示了如何将 HTML 复制到邮件应用程序中。 http://mcmurrym.wordpress.com/2010/08/13/pasting-simplehtml-into-the-mail-app-ios/

于 2010-07-22T15:09:28.383 回答
5

我的 HTML 副本工作正常,因此它可以正确粘贴到内置的邮件和便笺应用程序中。它看起来像这样:

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>
于 2014-11-14T19:17:35.947 回答
1

在您在评论中提供的同一个链接上,您会在顶部找到这一段。

统一类型标识符 (UTI) 经常用于表示类型(有时称为粘贴板类型)。例如,您可以使用 kUTTypeJPEG(public.jpeg 的常量)作为 JPEG 数据的表示类型。但是,应用程序可以自由地使用他们想要的任何字符串作为表示类型;但是,对于特定于应用程序的数据类型,建议您使用反向 DNS 表示法以确保类型的唯一性(例如,com.myCompany.myApp.myType)。

它的正下方是指向此处的链接。http://developer.apple.com/iphone/library/documentation/FileManagement/Conceptual/understanding_utis/understand_utis_intro/understand_utis_intro.html#//apple_ref/doc/uid/TP40001319

这解释了尿路感染。

最后,此链接为您提供了几种类型http://developer.apple.com/iphone/library/documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html#//apple_ref/doc/uid/TP40009259-SW1

当然,该列表不是所有类型,因为您可以创建自己的类型。

我已成功将 html 粘贴到邮件应用程序中。我会给你一个好的开始...

创建一个将在粘贴板中显示数据类型的应用程序。转到设备上的 safari,复制网页。运行您的应用程序,您会注意到粘贴板类型是“Apple Web Archive 粘贴板类型”。请注意,这实际上是一种粘贴板类型(自定义类型)。如果您尝试通过创建 Web 存档自己复制 safari 移动复制和粘贴功能,并尝试将其作为文本粘贴到邮件应用程序中,它会将 Web 存档文件显示为原始 xml。如果您将类型定义为“Apple Web Archive 粘贴板类型”,邮件应用程序实际上会将粘贴格式化为 html。

如果您想知道 Web 存档的外观。在桌面 safari 上,只需将网页保存为存档并在文本阅读器中查看文件(文本编辑将尝试解析它,因此您可能使用不同的程序来查看存档 xml)。

请阅读所有文档,因为您会发现您可以在发送给我的链接中进行自定义类型。

于 2010-08-02T13:47:04.800 回答
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。所以,这将需要其中一个或什么都没有。

于 2021-06-11T17:08:09.190 回答
-17

不,它不能。UIPasterBoard 只接受字符串、图像、URL 和颜色。

于 2010-03-15T23:42:00.257 回答