用于打开菜单的UIDocumentInteractionController - 不起作用

Jus*_*kva 22 ios uidocumentinteraction ios5

我实现了一个UIDocumentInteractionController来将文件发送到其他应用程序.该文件是.txt文件.

这是代码:

UIDocumentInteractionController *interactionController = [[UIDocumentInteractionController alloc] init];
[interactionController setURL:[NSURL fileURLWithPath:filePath]];
[interactionController setUTI:@"public.text"];
[interactionController setDelegate:self];
[interactionController presentOpenInMenuFromBarButtonItem:actionBarButtonItem animated:YES];
Run Code Online (Sandbox Code Playgroud)

菜单打开正常,显示像Pages,Dropbox等应用程序,如我所料.但是当我点击其中一个时,Open In菜单会解除并且不执行任何操作(文件未发送且目标应用程序永远不会打开.

我尝试实现委托方法documentInteractionController:canPerformAction:documentInteractionController:performAction:触发copy:和print:调用使用选项菜单(而不是菜单中的打开),并拉出一个只列出页面的菜单,但仍然无效.

怎么解决这个问题?

Jus*_*kva 49

我找到了答案,这是内存管理.我创建了UIDocumentInteractionController然后呈现它,但我没有它作为实例变量.ARC在它有机会做任何事情之前解除它.这包括将文档发送到外部应用程序.

这个bug没有出现在iPhone上,但是在iPad上它会出错,因为popover架构的工作方式有点不同,最终会在解除分配时尝试绘制它.这就是提醒我这个bug的原因.


ros*_*ino 16

此错误也出现在iPhone/iPod上.刚设置:

@property (nonatomic, retain) UIDocumentInteractionController *docController;
Run Code Online (Sandbox Code Playgroud)

它将被保留,文档将传递给新的应用程序.