2013-05-14 54 views
3

我有一个UIDocumentInteractionController实例(我的课上有很强的参考,我知道它的内存问题),我想发送一个照片文件到Instagram。UIDocumentInteractionController无法打开应用程序(didEndSendingToApplication:从未调用过)

我使用ig扩展名(也尝试了igo)保存了该文件,并且我正在呈现控制器。 Instagram显示在列表中。我点击Instagram,没有任何反应。

NSURL *imageFile = [NSURL fileURLWithPath:path]; 
interactionController = [UIDocumentInteractionController interactionControllerWithURL:imageFile]; 
interactionController.UTI = @"com.instagram.photo"; 
interactionController.annotation = [NSDictionary dictionaryWithObject:@"my caption" forKey:@"InstagramCaption"]; 
interactionController.delegate = self; 
[interactionController presentOpenInMenuFromRect:self.view.frame inView:self.view animated:YES]; 

为了进一步调查,我已经把我的调用类的委托并实现了willBeginSendingToApplication:didEndSendingToApplication:方法。有趣的是,我意识到willBeginSendingToApplication:确实被调用,但didEndSendingToApplication:没有。我试着更改我的文件扩展名,将UTI更改为com.instagram.exclusivegram,检查文件的URL是否正确等,但没有一个似乎工作。没有错误,控制台或任何东西都没有。交互控制器关闭,我的应用程序继续工作,因为它以前工作,只是没有任何反应。我读过iOS 6上可能会出现一些问题,但我的应用程序是iOS 6应用程序,所以我无法在iOS上测试它6.唯一接近我发现的问题是UIDocumentInteractionController, No File Extension but UTI但它过多地陷入低级别位,我也没有非ARC代码。

问题的原因是什么?

+0

您是否尝试在物理设备上测试?模拟器不适用于我,但是在物理设备上进行测试很有效。 – 2015-02-25 17:41:15

回答

1

经过很长时间,我发现文件没有正确保存,并且不存在。 iOS没有抛出任何类型的错误,失败了。我纠正了关于生成文件的代码,当文件在那里时,控制器出现了。也许Apple应该添加一些断言/异常机制来处理文档交互控制器中不存在的文件。

4

如果文件不存在,也可能发生这种情况,但是如果您没有正确构建文件的URL,也会发生这种情况。这困扰了我一段时间。

确保您构建您的文件URL是这样的:

NSURL *pagesURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"MyGreatPDF.pdf" ofType:nil]]; 

,而不是像这样:

NSURL *pagesURL = [NSURL fileURLWithPath:@"MyGreatPDF.pdf"]; 

后者至今仍是一个有效的URL,但它得到一个“私”字头,即file:///private/var/mobile/Applications/00000000-0000-0000-0000-000000000000/MyGreatApp.app/MyGreatPDF.pdf而不是file:///var/mobile/Applications/00000000-0000-0000-0000-000000000000/MyGreatApp.app/MyGreatPDF.pdf

+0

当我从文档交互控制器按邮件我的委托方法不叫,我有尝试你的答案也 – Verma 2015-01-22 10:52:11

0

这也造成文件名的扩展名。

如果目标应用程序声明它仅支持文件,PNG扩展在的Info.plist - >出口型尿路感染 - >等效类型 - > public.filename扩展,你发送一个文件,JPG扩展程序,目标应用程序也不会打开。

相关问题