iOS:UIPasteboard setImage:iOS6和/或Xcode 4.5失败
更新:在Apple网站上添加了bug 12408800。iOS:UIPasteboard setImage:iOS6和/或Xcode 4.5失败
我复制某一个或多个的UIImage到UIPasteboard,并一直工作势如破竹..直到我的手机升级到iOS 6
- 的Xcode 4.5与iOS 5.1 - OK
- 的Xcode 4.4与iOS 6.0 - 另外行(according to this post)
- 的Xcode 4.5与iOS 6.0 - FAIL
(也测试通过TestFlight分发,为它的价值 - 仍然失败)
这里是我的代码(超级基本等):
// add image to clipboard
UIImage *image = [[UIImage imageNamed:@"testimage"];
[[UIPasteboard generalPasteboard] setPersistent:YES];
[[UIPasteboard generalPasteboard] setImage:image];
这里是当我发生了什么尝试在MMS/iMessage窗口中粘贴(抱歉巨大的屏幕截图;视网膜显示..):
..和在所述iOS6的模拟器的消息示例应用程序的故障的一个例子(见两个问号..):
就像我说的,上面的代码已经工作了很长时间,所以我确信这是一个新的东西。
有什么想法?在链接的文章中,作者建议在旧版本的Xcode上重新编译 - 但不会导致其他iOS6库停止工作?
这适用于iOS 6设备的Xcode 4.5。
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
NSData *imgData = UIImagePNGRepresentation(@"image");
[pasteboard setData:imgData forPasteboardType:[UIPasteboardTypeListImage objectAtIndex:0]];
我收到一封电子邮件有关此问题的苹果开发者技术支持,我得到这个答复:
感谢您联系苹果开发技术支持。我们的工程师已审核您的请求,并确定这将作为错误报告最好地处理。
请使用Bug Reporter工具http://bugreport.apple.com提交有关此问题的完整的错误报告。
所以这是一个肯定的错误...
只有一个形象,你应该使用:
#import <MobileCoreServices/UTCoreTypes.h>
对于JPEG:
NSData *jpegData = UIImageJPEGRepresentation(image, 1.0);
[[UIPasteboard generalPasteboard] setData:jpegData forPasteboardType:(id)kUTTypeJPEG];
或为PNG:
NSData *pngData = UIImagePNGRepresentation(image);
[[UIPasteboard generalPasteboard] setData:pngData forPasteboardType:(id)kUTTypePNG];
,直接避免UIPasteboardTypeListImage索引。
+1添加#import,其他人忽略提及。 –
你也可以使用@“public.jpeg”而不是kUTTTypeJPEG,因为它的公共常量永远不会改变。这样可以避免将一个常量链接到整个库中。 –
在iOS8中我在粘贴到Notes应用程序时遇到了问题,但上面的代码工作正常。通过我在下面分享的代码,粘贴在Messages应用程序正在工作,但现在都可以工作:UIPasteboard * pasteBoard = [UIPasteboard generalPasteboard]; \t if(image){ \t \t [pasteBoard setImage:image]; \t} – c0d3Junk13
我确实需要新的iOS功能,不幸的是..否则我的旋转是完全结合在iOS 6上。所以,现在,我完全从我的应用程序中删除了复制/粘贴。 OY合租。 – toblerpwn