1) 我使用此方法从 UIPasteboard
复制图像 [UIPasteboard genericPasteboard].image;
2)创建图像后,我想清理UIPasteboard
。所以我写了这个方法 [UIPasteboard GeneralPasteboard].image = nil;
但这在 ios 4 和 ios 5 上工作正常,但在 ios 6 上却出现问题。
3) 在我的应用程序中,我想清理 UIPasteboard
或将 UIPasteboard
值置零。我如何在 ios 6 上执行此操作?
最佳答案
我很抱歉,但接受的答案只是误导/不正确。这不会清除粘贴板中的现有值。
setValue:forPasteboardType:
的第二个参数是项目的字符串标识符。正如文档所示,它可能是一个 UTI(查看 MobileCoreServices)或用户定义的字符串。
接受的答案中的方法调用使用UIPasteboardNameGeneral
,它是整个粘贴板本身的标识符(如果 [UIPasteboard items 中的字典数组中的项目]
)。由于粘贴板不包含该键的项目,因此该调用将是无操作。您自己很容易验证这一点。 [[UIPasteboard GeneralPasteboard] name]
等于 UIPasteboardNameGeneral
。此外,containsPasteboardTypes:
使用该键将返回NO
。
现在来解决 iOS 6 中可能发生的情况。Apple 可能会使用 UTI(例如 kUTTypePNG
)作为存储在粘贴板中的图像数据的 key 。他们可能会确保为该键设置的值确实是 NSData(nil
不是)。
为了解决您的难题,我可以提出以下建议之一:
- 如果您不想与其他应用程序共享放入剪贴板的内容,您可以使用
+ (UIPasteboard *)pasteboardWithName:(NSString *)pasteboardName create:(BOOL 创建应用程序特定的剪贴板)创建
- 只有您的应用程序可以访问此剪贴板的内容,并且当您的应用程序被删除时,该剪贴板的内容也会被删除。
- 当应用退出时,剪贴板的内容将被清除,除非您将
persistent
属性设置为 YES。 - 您仍然可以通过访问通用剪贴板来访问其他应用程序放置到剪贴板的项目。
- 如果您绝对必须清除内容(鉴于列出的限制),您可以尝试设置另一个有效图像。我对这种方法存有疑问,因为给定的剪贴板项目可能有多个键。
希望这对您有所帮助。
关于iphone - 如何抹掉UIPasteboard的值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13235528/