我有一个UIWebView
显示一些自定义HTML内容。如果我按住,然后选择一些文本并点击Copy
选项,则文本将通过键“ com.apple.rtfd”添加到UIPasteboard
。我现在的问题是我找不到任何方法来提取我刚刚复制的内容的实际文本内容。如果我使用此代码:
NSString *contents = [NSString stringWithUTF8String:[data bytes]];
无论我实际上从
UIWebView
复制了什么文本,它都会返回文字字符串“ rtfd”。如果我使用此代码:NSString *contents = [[NSString alloc] initWithData:data
encoding:NSUTF8StringEncoding];
我得到一个空白字符串。如何获得刚复制到粘贴板的文本内容?
最佳答案
我了解到,当您将所选文本从UIWebView
复制到UIPasteboard
时,实际上会将多个键值放入UIPasteboard返回的字典中,其中“ com.apple.rtfd”只是第一个键。复制元素的实际文本值也包含在键“ public.text”下。此代码可用于提取值:
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
NSArray *dataArray = [pasteboard items];
NSDictionary *dict = (NSDictionary *)[dataArray objectAtIndex:0];
NSString *pastedText;
if ([dict objectForKey:@"public.text"]) {
// this is a text paste
pastedText = (NSString *)[dict objectForKey:@"public.text"];
}