我正在使用UIDocumentInteractionController OpenIn Menu将我应用程序中生成的图像发送到其他应用程序.我用这个代码保存UI
Image到磁盘:
fileJpeg = [NSTemporaryDirectory() stringByAppendingPathComponent:@"activeImage.jpg"]; jpegFileURL = [NSURL fileURLWithPath:fileJpeg]; UIImage *imageToWrite = image; [UIImageJPEGRepresentation(imageToWrite,1.0) writeToFile:fileJpeg atomically:YES];
我正在使用另一种方法访问jpegFileURL,使用MFMailComposeViewController通过电子邮件发送图像,并且它的工作原理很好,所以NSURL是有效的.但是当我尝试将图像发送到另一个应用程序(只是发送,我没有实现任何预览功能)应用程序崩溃.这是方法:@H_301_5@
- (IBAction)openInOtherApp:(id)sender{ UIDocumentInteractionController *controller = [UIDocumentInteractionController interactionControllerWithURL: jpegFileURL]; controller.delegate = self; CGRect rect = self.view.frame; [controller presentOpenInMenuFromRect:rect inView:self.view animated:YES]; }
显示“打开”菜单.当我点击任何可用的应用程序的按钮崩溃.在iOS6(6.0.1)和iOS5(5.1.1)设备中进行测试时,控制台中没有出现任何错误输出(通常是EXC_BAD_ACCESS(code = 1,address … crash),而在iOS 4.3设备上应用程序是4.3向上兼容)我在控制台中得到这个错误:@H_301_5@
*** Terminating app due to uncaught exception 'NSInvalidArgumentException',reason: '-[__NSCFType actionSheet:clickedButtonAtIndex:]: unrecognized selector sent to instance 0x16b7f0'
我一直在阅读关于UIDocumentInteractionController和UIDocumentInteractionControllerDelegate的Apple的文档,我在我的类@interface中实现,但是没有一个可选的委托方法似乎是我需要的,或者在这个崩溃中有帮助.@H_301_5@
解决方法
发现问题,谢谢
this answer.这是一个记忆的事情.我正在使用UIDocumentInteractionController作为本地实例变量,ARC即将发布.把它变成一个类属性,现在一切都有效.