带有iOS7的iphone上的UIDocumentInteractionController奇怪的行为
Posted
技术标签:
【中文标题】带有iOS7的iphone上的UIDocumentInteractionController奇怪的行为【英文标题】:UIDocumentInteractionController weird behaviour on iphone with iOS7 【发布时间】:2013-12-10 22:06:10 【问题描述】:我现在遇到一个问题已经两天了,我需要你的帮助。在我开始之前,我应该说这个问题出现在带有 ios7 的 iPhone 5 上(我还在带有 iOS 6 的 iPhone 4 和带有 iOS 7 的 iPad 2 上进行了测试)。当我尝试升级 AppStore 上的应用程序(最初是 iOS4)并尝试使其与 iOS 7 兼容(iOS6 及更高版本支持)时,这个问题就开始了。
场景非常简单。我有一个视图是 UIDocumentInteractionControllerDelegate。我从 Web 服务下载一个文件,将其保存在 NSTemporaryDirectory 上,并允许用户使用 presentOptionsMenuFromRect 在另一个应用程序中预览或打开。代码简化如下:
我已经声明了一个@property (nonatomic, strong) UIDocumentInteractionController *docController;
@autoreleasepool
NSString *fileName = "uniquefilename"
NSString *filePath = [NSTemporaryDirectory() stringByAppendingPathComponent:fileName];
fileURL = [NSURL fileURLWithPath:filePath];
NSFileManager *fileManager = [NSFileManager defaultManager];
if(![fileManager fileExistsAtPath:filePath])
NSData *fileData = [NSData dataWithContentsOfURL:[NSURL URLWithString:"theurlofthefile"]];
NSError *writeError = nil;
[fileData writeToURL: fileURL options:0 error:&writeError];
if(writeError)
//show error
docController = [UIDocumentInteractionController interactionControllerWithURL:url];
docController.delegate = self;
if (isIpad)
[docController presentOptionsMenuFromRect:CGRectMake(location.x + 400,location.y, 100, 100) inView:tableView animated:YES];
else
[docController presentOptionsMenuFromRect:CGRectZero inView:self.tabBarController.view animated:YES];
问题是我收到各种各样的错误,我一直重复相同的过程,我得到不同的错误,有时它连续工作很多次,有时它从第一次开始就失败了。我收到的其他错误,当我再次得到它们时我会添加:
* 由于未捕获的异常“NSGenericException”而终止应用程序,原因:“* 集合 <0x16ff61e0>0x16ff61e0>
回答有点晚,但希望对其他人有所帮助。
我在保存文件并显示 UIDocumentInteractionController 时遇到了完全相同的问题,它完全是随机的,有时它会完美地连续 10 次,有时它会在第一次尝试时崩溃。
这似乎是由于文件未完成写入磁盘造成的,为我解决的问题是在呈现 UIDocumentInteractionController 之前添加延迟以确保文件已完成写入磁盘
【讨论】:
我也有同样的经历。是的,它有时会随机运行。以上是关于带有iOS7的iphone上的UIDocumentInteractionController奇怪的行为的主要内容,如果未能解决你的问题,请参考以下文章
iOS 7:UIDocument / UIManagedDocument 和 iCloud 发生了啥?
UINavigationController 作为 iPhone 上的弹出框?