【问题标题】:QuickLook fails loading some filesQuickLook 无法加载某些文件
【发布时间】:2017-09-22 19:10:56
【问题描述】:

背景

我正在尝试通过 QuickLook 打开一些文件。我有一个 .docm 和一个 .pdf 文件,我可以用它们来重现这个错误。起初我以为这是由于启用了宏的 Microsoft Office 文档,但由于我收到 100+MB pdf 的错误,我想知道 QuickLook 是否有问题。

错误

[default] View service did terminate with error: Error Domain=_UIViewServiceInterfaceErrorDomain Code=3 "(null)" UserInfo={Message=Service Connection Interrupted} #Remote

QuickLook 会反复抛出此错误。从我所见,这个错误似乎只在使用模拟器并尝试发送电子邮件时很常见。我使用的是 iPhone 7+,每次都能重现。

我想知道我使用的文件是否有问题。

测试

我尝试了以下文件,结果各不相同

  • 100MB .pdf - 成功
  • 100MB .doc - 成功
  • 17MB .docm - 失败
  • 85MB .docx - 成功
  • 100MB .pdf - 失败(与第一个不同,此文件加载文件但反复闪烁,直到进入“错误”快速查看屏幕)

问题

QuickLook 是否有任何大小限制或超时可能导致此奇怪错误?

【问题讨论】:

  • 我遇到了同样的问题,请参阅cryptomator-ios/issues/85。你找到解决方法了吗?可能是 QLPreviewController 中的上游错误,甚至可能是特定于 iOS 10.3.1 的错误?
  • 我无法修复它,绝对看起来像是一个上游错误,并且查看您的未解决问题似乎也是那里的判决!

标签: ios quicklook


【解决方案1】:

以防万一它发生在 iOS12 中,尝试在呈现这样的 quicklook 控制器时添加延迟 -

Objective-C

 QLPreviewController *previewController = [[QLPreviewController alloc]init];
 previewController.delegate = self;
 previewController.dataSource = self;
 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3 * NSEC_PER_SEC)),  dispatch_get_main_queue(), ^{
     [self presentViewController:previewController animated:YES completion:nil];
 });                                                                      

斯威夫特

let previewController = QLPreviewController()
        previewController.dataSource = self
        previewController.delegate = self
        let delay = DispatchTime.now() + 0.3
        DispatchQueue.main.asyncAfter(deadline: delay, execute: {
            self.present(previewController, animated: true)
        })

这对我来说是固定的。

【讨论】:

  • 啊,我从没想过这是一个控制器渲染问题——如果我在以后的工作中再次遇到这个问题,我会尝试一下,谢谢!
猜你喜欢
  • 2021-11-11
  • 2019-02-25
  • 1970-01-01
  • 2013-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-24
  • 2011-12-09
相关资源
最近更新 更多