UIDocumentInteractionController不再适用于iOS6

时间:2012-09-27 23:21:07

标签: iphone objective-c xcode ios6 uidocumentinteraction

我有一个应用程序,它与为iOS5构建的Instagram共享,现在在iOS6中共享,虽然canOpenURL返回true并且代码执行,但共享不再有效。图像将以.igo扩展名保存到应用程序的文档文件夹中。这将通过com.instagram.exclusivegram传递给Instagram。

代码如下,它进入if语句并显示“here in”但不会像屏幕底部那样打开Share With对话框。

        NSLog(@"%@", _imgToUpload);
        NSURL *instagramURL = [NSURL URLWithString:@"instagram://app"];
        if ([[UIApplication sharedApplication] canOpenURL:instagramURL]) {
            uidController = [[UIDocumentInteractionController alloc] init];
            //imageToUpload is a file path with .igo file extension
            uidController = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:_imgToUpload]];
            uidController.UTI = @"com.instagram.exclusivegram";
            uidController.delegate = self;
            CGRect navRect = self.view.frame;
            [uidController presentOpenInMenuFromRect:navRect inView:[UIApplication sharedApplication].keyWindow animated:YES];
            NSLog(@"here in");
        }

_imgToUpload也提供了正确的文件路径。

谢谢你, 尼克

2 个答案:

答案 0 :(得分:11)

刚做了一些测试并找到了解决方案。不要出现在keyWindow中。

[uidController presentOpenInMenuFromRect:navRect inView:self.view animated:YES];

我测试了这个,它将解决问题。

答案 1 :(得分:0)

uidocumentinteraction控制器无法在iOS6中运行的另一个原因是现在使用新的操作表/启动面板(它显示可用于打开文档的应用程序)。使用iOS5的iBooks运行良好的应用程序失败,因为我从viewDidLoad启动,现在太早了,我在当前视图控制器上看到错误,其视图不在窗口层次结构中,所以我在延迟后将代码更改为执行选择器1秒。该应用程序现在通过新面板调用iBooks。