【发布时间】:2011-10-17 21:19:13
【问题描述】:
我们有一个现有的应用程序,允许用户将文本复制到粘贴板。如果可能,我们会将 HTML 和纯文本都放在剪贴板上,因为我们不知道用户可能会粘贴到哪个其他应用程序中,并且希望同时提供格式化 (HTML) 和未格式化的数据。
此功能在 iOS 3 和 4 中运行良好。但一旦用户安装 iOS 5,当他们将文本从我们的应用程序粘贴到任何其他应用程序时,其他应用程序会获取 HTML 文本但将其视为纯文本。因此,如果他们选择并复制 H1 标题,当他们粘贴到其他应用程序时,他们看到的不是“这是一个标题”,而是“
这是一个标题
”。请注意,现有代码在 iOS 3 和 4 中运行良好。我们的代码在 iOS 3、4 和 5 之间没有任何变化。
为了完整起见,下面是我们用来将文本放在粘贴板上的代码,提供的简单字符串仅供参考:
NSString * plainText = @"A Big Heading\r\nA regular paragraph.";
NSString * htmlText = @"<h1>A Big Heading</h1><p>A regular paragraph.</p>";
UIPasteboard * pasteboard = [UIPasteboard generalPasteboard];
pasteboard.items = [NSArray arrayWithObject:
[NSDictionary dictionaryWithObjectsAndKeys:
plainText, @"public.utf8-plain-text", htmlText, @"public.html", nil]];
显然,我的问题是“为什么 iOS 5 应用程序在请求纯文本时会获取 HTML 文本,而在 iOS 4 下运行的同一个应用程序会获取纯文本?”
【问题讨论】:
标签: iphone ipad ios5 uipasteboard uti