我遇到这个奇怪的问题只出现在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。
请提出任何有助于找到解决方案的问题。
答案 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卡住了。我希望我的问题可以帮助那些有类似奇怪应用程序行为的人。