iPhone 4不提供UIDocumentInteractionController

时间:2014-06-30 13:44:18

标签: ios objective-c iphone-4

我遇到这个奇怪的问题只出现在iOS 7的iPhone 4中。当我尝试向屏幕上显示UIDocumentInteractionController时,应用程序停留在presentPreviewAnimated方法上。当我尝试使用MPMoviePlayerViewController时,同样的事情发生在不同的地方,只是这次它被卡在initWithContentURL上。不会抛出任何错误。我知道我提供的信息不多,但我不知道这些事情是如何相关的,因此我不知道哪些信息会有所帮助。在我的项目中,我使用了以下视图结构。

HomeViewController * homeViewController = [[HomeViewController alloc] initWithNibName:@"HomeViewController" bundle:nil];
MenuTableViewController * menuViewController = [[MenuTableViewController alloc] initWithStyle:UITableViewStylePlain];
ECSlidingViewController * slidingViewController = [[ECSlidingViewController alloc] init];
slidingViewController.topViewController = homeViewController;
slidingViewController.underLeftViewController = menuViewController;
UINavigationController * navigationController = [[UINavigationController alloc] initWithRootViewController:slidingViewController];
self.window.rootViewController = navigationController;

例如,当我调试代码时:

_docController = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:filePath]];
_docController.delegate = self;
[_docController presentPreviewAnimated:YES];
NSLog(@"Document showed");

@"文件显示"永远不会记录消息。

应用程序在iPad和iPhone 5上运行良好。 在我的项目中,我正在使用CocoaPods。

请提出任何有助于找到解决方案的问题。

2 个答案:

答案 0 :(得分:0)

尝试下面的代码,希望它会有所帮助。 在.h文件中设置UIDocumentInteractionControllerDelegate

 @interface NextViewController : UIViewController <UIDocumentInteractionControllerDelegate>

创建UIDocumentInteractionController的对象并初始化它。

 - (IBAction)openDocument:(id)sender
 {
      NSString* path = [[NSBundle mainBundle] pathForResource:@"fileName" ofType:@"fileType"]; // File types - .pdf, .txt, .jpg, .png, or any other.
      if (path)
      {
          NSURL* url = [NSURL fileURLWithPath:path];
          UIDocumentInteractionController* docController = [UIDocumentInteractionController interactionControllerWithURL:url];
          docController.delegate = self;
          [docController presentPreviewAnimated:YES];
      }
 }

实施其委托方法。

 #pragma mark - UIDocumentInteractionControllerDelegate

 - (UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)controller
 {
   return self;
 }

答案 1 :(得分:0)

原来,iPhone 4管理线程的方式与其他新设备不同。我没有直接相关的地方出错,导致无限循环。

while (self.delegate && ![self.delegate dataLoaderOperationCanStop:self]) 
{
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
}

所有其他设备都显示那些ViewControllers没有问题,只有iPhone 4卡住了。我希望我的问题可以帮助那些有类似奇怪应用程序行为的人。