0

UIPasteboard1)我使用这种方法复制图像[UIPasteboard generalPasteboard].image;

2)创建图像后,我想清理UIPasteboard. 所以我写了这个方法[UIPasteboard generalPasteboard].image = nil;,但这在 ios 4 和 ios 5 上运行良好,但在 ios 6 上出现问题。

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

4

2 回答 2

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。
    • 您仍然可以通过访问通用剪贴板来访问其他应用程序放置在剪贴板上的项目。
  • 如果您绝对必须清除内容(鉴于列出的限制),您可以尝试设置另一个有效图像。我对这种方法有疑问,因为给定的剪贴板项目可能有多个键。

希望这可以帮助。

于 2014-01-29T07:37:41.660 回答
0

这是我目前使用的

UIPasteboard *pb = [UIPasteboard generalPasteboard];
[pb setValue:@"" forPasteboardType:UIPasteboardNameGeneral];
于 2012-11-05T16:00:43.257 回答