objective c - iOS: UIPasteboard setImage: falla en iOS6 y/o Xcode 4.5
objective-c (3)
Actualización: se agregó el error 12408800 en el sitio de Apple.
Estoy copiando uno o varios UIImage a UIPasteboard, y ha estado funcionando como gangbusters ... hasta que mi teléfono se actualizó a iOS 6.
- Xcode 4.5 con iOS 5.1 - OK
- Xcode 4.4 con iOS 6.0 - También está bien ( según esta publicación )
- Xcode 4.5 con iOS 6.0 - FAIL
(También probó la distribución a través de TestFlight, por lo que vale, aún falla)
Aquí está mi código (súper básico, etc.):
// add image to clipboard
UIImage *image = [[UIImage imageNamed:@"testimage"];
[[UIPasteboard generalPasteboard] setPersistent:YES];
[[UIPasteboard generalPasteboard] setImage:image];
Y aquí está lo que sucede cuando trato de pegar en una ventana de MMS / iMessage (lo siento por una gran captura de pantalla; retina la pantalla ...):
..y un ejemplo de error en la aplicación de ejemplo Mensajes en el simulador iOS6 (ver los dos signos de interrogación ...):
Como dije, el código anterior ha estado funcionando durante años, así que estoy seguro de que esto es algo nuevo.
¿Alguna idea? En la publicación vinculada, el autor sugiere volver a compilar en una versión anterior de Xcode, pero ¿eso no haría que otras bibliotecas iOS6 dejaran de funcionar?
Esto funciona para mí en Xcode 4.5 para mis dispositivos con iOS 6.
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
NSData *imgData = UIImagePNGRepresentation(@"image");
[pasteboard setData:imgData forPasteboardType:[UIPasteboardTypeListImage objectAtIndex:0]];
Para una sola imagen, debes usar:
#import <MobileCoreServices/UTCoreTypes.h>
Para JPEG:
NSData *jpegData = UIImageJPEGRepresentation(image, 1.0);
[[UIPasteboard generalPasteboard] setData:jpegData forPasteboardType:(id)kUTTypeJPEG];
o para PNG:
NSData *pngData = UIImagePNGRepresentation(image);
[[UIPasteboard generalPasteboard] setData:pngData forPasteboardType:(id)kUTTypePNG];
y evite la indexación directamente en UIPasteboardTypeListImage.
Envié un correo electrónico sobre este problema al Servicio técnico de desarrolladores de Apple y obtuve esta respuesta:
Gracias por contactar al Soporte Técnico de Desarrolladores de Apple. Nuestros ingenieros han revisado su solicitud y han determinado que esto se trataría mejor como un informe de error.
Envíe un informe de error completo sobre este problema utilizando la herramienta Bug Reporter en http://bugreport.apple.com .
Entonces, es un error seguro ...