为什么我的UIPasteboard代码不起作用?

时间:2012-01-02 07:50:27

标签: ios ipad uipasteboard

我对UIPasteboard有一个奇怪的问题。

我正在从Safari复制文本,然后在我的应用程序中查看UIPasteboard以查看它是否包含使用此代码的任何数据:

[[UIPasteboard generalPasteboard] containsPasteboardTypes:[NSArray arrayWithObject:@"public.utf8-plain-text"]]

它可以在模拟器上正常工作,但不能与iPad配合使用。这是因为任何字符集问题吗?

2 个答案:

答案 0 :(得分:4)

由于字符集我遇到了这个问题,但我不确定它只适用于IOS 5.0或所有版本。但我用一个简单的解决方案解决了我的问题,

UIPasteboardTypeListString

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIPasteboard_Class/Reference.html

 [[UIPasteboard generalPasteboard] containsPasteboardTypes:UIPasteboardTypeListString];
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard]; 
if (pasteboard.string != nil) { [self insertText:pasteboard.string]; }

我希望这个答案可以帮助任何人。

答案 1 :(得分:1)

根据我自己的经验,在iOS 5中,纯文本不再以public.utf8-plain-text的形式出现在粘贴板上,而是作为public.text。使用UIPasteboardTypeListString而不是显式指定字符串也可以。

所以我现在在我的代码中使用以下内容来检测粘贴板中的纯文本:

[[UIPasteboard generalPasteboard] containsPasteboardTypes:[NSArray arrayWithObjects:@"public.utf8-plain-text", @"public.text", nil]]

[[UIPasteboard generalPasteboard] containsPasteboardTypes:UIPasteboardTypeListString]

您是否正在针对iOS 4.x在模拟器中进行测试并且您的iPad已安装iOS 5?