如何确定UIPasteboard的价值

时间:2012-11-05 15:47:08

标签: iphone ios ios6

1)我使用此方法UIPasteboard

[UIPasteboard generalPasteboard].image;复制图像

2)创建图像后,我想清理UIPasteboard。所以我写这个方法[UIPasteboard generalPasteboard].image = nil;但是这在ios 4和ios 5上工作得很好但是它给ios 6带来了问题。

3)在我的应用中,我想要清除UIPasteboard或取消UIPasteboard值。我怎么能在ios 6上做到这一点?

2 个答案:

答案 0 :(得分:1)

我很抱歉,但接受的答案只是误导/不正确。这不会清除粘贴板中的现有值。

setValue:forPasteboardType:的第二个参数是项目的字符串标识符。正如文档所示,它可能是UTI(在MobileCoreServices中查找)或用户定义的字符串。

接受的答案中的方法调用使用UIPasteboardNameGeneral,它是整个粘贴板本身的标识符(如果[UIPasteboard items]中的字典数组中的项目,则不是一个键)。由于粘贴板不包含该键的项目,因此该调用将是无操作。很容易自己验证。 [[UIPasteboard generalPasteboard] name]等于UIPasteboardNameGeneral。此外,使用该密钥的containsPasteboardTypes:将返回NO

现在解决iOS 6中可能发生的情况.Apple可能会使用UTI(比如kUTTypePNG)作为存储在粘贴板中的图像数据的关键。他们可能确保为该键设置的值确实是NSData(nil不是)。

为了解决您的难题,我可以建议以下其中一项:

  • 如果您不想与其他应用程序共享放在剪贴板上的内容,可以使用+ (UIPasteboard *)pasteboardWithName:(NSString *)pasteboardName create:(BOOL)create创建特定于应用程序的剪贴板
    • 此剪贴板的内容只能由您的应用程序访问,并在删除您的应用程序时删除。
    • 除非您将persistent属性设置为YES,否则将在应用退出时清除剪贴板的内容。
    • 您仍然可以通过访问常规剪贴板来访问其他应用程序放置在剪贴板上的项目。
  • 如果您必须清除内容(已列出限制),您可以尝试设置其他有效图像。我对这种方法有疑问,因为给定的剪贴板项可能有多个键。

希望这有帮助。

答案 1 :(得分:0)

这是我目前使用的

UIPasteboard *pb = [UIPasteboard generalPasteboard];
[pb setValue:@"" forPasteboardType:UIPasteboardNameGeneral];