ios / Objective C - UIDocumentInteractionController - 'Open In'方法始终返回NO

时间:2013-01-23 08:31:15

标签: ios objective-c uidocumentinteraction

我希望有人可以帮助解决我在UIDocumentInteractionController中遇到的非常令人沮丧的问题。

我需要调用'presentOpenInMenuFromRect'方法,以允许用户在另一个应用程序中打开文件。在这个阶段,我只是做一个概念验证,所以我只是使用一个非常基本的文件类型进行测试。

我使用下面的代码设置了我的UiDocumentInteractionController,并验证了文件路径URL是否正确,因为我可以成功调用presentPreviewAnimated方法,并且文档确实在预览模式下打开。

我遇到的问题是'presentOpenInMenuFromRect'总是返回NO,无论我使用什么文件类型。到目前为止,我使用了以下常见文件类型,但都无济于事:jpg,png,pdf,txt,rtf和html。

如果有人遇到这个问题,我会感激任何建议。当然,设备应该将这些文件中的至少一个识别为具有关联的应用程序(事实上,预览确实不能证明这一点吗?)我想知道我正在做一些更根本的错误吗?我在iPhone上调试btw,所以这不是模拟器的怪癖。

任何建议都非常非常欢迎!提前谢谢。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSURL *filePath = [NSURL fileURLWithPath:[documentsDirectory stringByAppendingPathComponent:@"test.txt"]];

documentInteractionController = [UIDocumentInteractionController interactionControllerWithURL:filePath];
documentInteractionController.delegate = self;
[documentInteractionController retain];

// The following line does work, so we know the UIDocumentInteractionController and filepath are fundamentally correct
// [documentInteractionController presentPreviewAnimated:YES];

// Method ALWAYS returns NO, no matter what file type is used
if (![documentInteractionController presentOpenInMenuFromRect:CGRectZero inView:self.view animated:YES])
    NSLog(@"Failed to show Open In menu");

1 个答案:

答案 0 :(得分:2)

我以为我会为其他有相同问题的人发布更新...我现在相信'Open In'菜单没有出现的原因是因为没有安装应用程序的简单事实我用过的文件扩展名。

现在这看起来相当明显,但当时我认为一些更常见的文件类型会与系统应用程序等相关联 - 但是在安装Adobe Reader时,现在似乎可以使用pdf了。