【问题标题】:UIDocumentInteractionController for Open In menu - Doesn't Work用于在菜单中打开的 UIDocumentInteractionController - 不起作用
【发布时间】:2011-11-12 02:51:33
【问题描述】:

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

代码如下:

UIDocumentInteractionController *interactionController = [[UIDocumentInteractionController alloc] init];
[interactionController setURL:[NSURL fileURLWithPath:filePath]];
[interactionController setUTI:@"public.text"];
[interactionController setDelegate:self];
[interactionController presentOpenInMenuFromBarButtonItem:actionBarButtonItem animated:YES];

菜单可以正常打开,如我预期的那样显示 Pages、Dropbox 等应用。但是当我点击其中一个时,“打开方式”菜单消失并且没有执行任何操作(文件未发送并且目标应用程序永远不会打开。

我尝试实现委托方法 documentInteractionController:canPerformAction:documentInteractionController:performAction: 来触发 copy: 和 print: 调用使用选项菜单(而不是在菜单中打开)并拉出一个仅列出页面的菜单,但是还是不行。

如何解决?

【问题讨论】:

    标签: ios ios5 uidocumentinteraction


    【解决方案1】:

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

    这个 bug 没有出现在 iPhone 上,但在 iPad 上它给出了一个错误,因为 popover 架构的工作方式有点不同,它最终会在它被释放时尝试绘制它。这就是提醒我注意这个错误的原因。

    【讨论】:

    • 谢谢!我在堆栈上搜索了很长时间,终于发现这个答案对我有用。
    • 这是 ARC 项目的答案。您必须为 UIDocumentInteractionController 声明一个属性:@property(nonatomic, strong)UIDocumentInteractionController * docController;
    • 谢谢。花了几个小时。但忘了弧。 thnx 再来一次。
    【解决方案2】:

    这个错误也出现在 iPhone/iPod 上。刚刚设置:

    @property (nonatomic, retain) UIDocumentInteractionController *docController;
    

    它将被保留并将文档传递给新应用程序。

    【讨论】:

      【解决方案3】:

      添加如下代码即可:

      [interactionController retain];
      

      【讨论】:

        猜你喜欢
        • 2014-03-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多