1)我使用此方法UIPasteboard
[UIPasteboard generalPasteboard].image;
复制图像
2)创建图像后,我想清理UIPasteboard
。所以我写这个方法[UIPasteboard generalPasteboard].image = nil;
但是这在ios 4和ios 5上工作得很好但是它给ios 6带来了问题。
3)在我的应用中,我想要清除UIPasteboard
或取消UIPasteboard
值。我怎么能在ios 6上做到这一点?
答案 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];