我们有一个现有的应用程序,允许用户将文本复制到剪贴板。在可能的情况下,我们将HTML和纯文本都放在剪贴板上,因为我们不知道用户可能要粘贴到哪个其他应用程序中,想要提供格式化(HTML)和未格式化数据。
这个功能在iOS 3和4中运行得很好。但是,一旦用户安装了iOS 5,在他们从我们的应用程序中粘贴文本到任何其他应用程序时,其他应用程序会获得HTML文本,但将其视为纯文本。因此,如果他们选择并复制H1标题,当他们粘贴到其他应用程序时,而不是看到“This is a Heading”,他们会看到“<h1>This is a Heading</h1>”。
请注意,这是使用现有代码在iOS 3和4中正常工作的情况下。在iOS 3、4和5之间,我们的代码没有任何更改。
为了完整起见,这里是我们用于将文本放在剪贴板上的代码,仅提供一个简单的字符串作为参考:
这个功能在iOS 3和4中运行得很好。但是,一旦用户安装了iOS 5,在他们从我们的应用程序中粘贴文本到任何其他应用程序时,其他应用程序会获得HTML文本,但将其视为纯文本。因此,如果他们选择并复制H1标题,当他们粘贴到其他应用程序时,而不是看到“This is a Heading”,他们会看到“<h1>This is a Heading</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下会得到纯文本?”