【问题标题】:QLPreviewController: quicklookd failing to loadQLPreviewController: quicklookd 加载失败
【发布时间】:2013-12-05 21:48:27
【问题描述】:

我有一些使用 QLPreviewController 显示简单 PDF 的简单代码。它在模拟器和一个非常简单的应用程序中运行良好。

在我真正希望它工作的应用程序中,它在设备上失败了。设备显示预览视图,但代替 PDF,它仅显示文本“simple.pdf,可移植文档格式 (PDF)”和文件大小(在本例中为“301KB”)。

有趣的是,日志发出“Failed to load quicklookd with error : The operation could not be completed. (Cocoa error 4097.)”

我试过了:

  • 几个 PDF,一个简单的全文本,以及一个 IRS 的 W4 PDF。结果相同。
  • UIDocumentInteractionController 代替。结果相同。

排除:

  • 我正在构建阶段链接 QuickLook.framework。
  • [QLPreviewController canPreviewItem:] 返回 YES。

我的观点层次结构并不十分复杂;一个位于 SWRevealViewController 前面的 UINavigationController。当 PDF 被 Quicklook'd 时,无论我在导航层次结构中的浅或深。

我没有想法,希望有人能识别错误。

编辑:应用程序在 iOS 6 设备上运行良好。在 6.1、7.0 和 7.1 的模拟器中工作。在 7.0 设备上失败,啊!

【问题讨论】:

    标签: ios quicklook


    【解决方案1】:

    这是 64 位设备上的问题。您可以在 64 位 iOS 7 模拟器中复制它。这里报告了与其他框架相同的错误:

    Cannot show modal ViewController in iOS7

    将构建设置中的架构设置更新为“标准架构(包括 64 位)(armv7、armv7s、arm64)”又名 $(ARCHS_STANDARD_INCLUDING_64_BIT) 将解决此问题。当然,前提是您拥有所有 3rd 方库的兼容版本。

    出于只有苹果工程师才能知道的原因,删除不同的外观委托更改也提供了至少通过 iOS 7.0.4 的解决方法。就我而言,导致问题的外观变化是

    [[UITableView外观] setSeparatorInset:UIEdgeInsetsZero];

    【讨论】:

    • 这是为我解决它的确切解决方案。我什至还插入了表格视图外观分隔符 - 删除这是一个临时解决方法。构建 arm64 切片是正确的解决方案。但这意味着您也必须为正在使用的任何 3rd 方库获取 arm64 切片 - 通过更新到最新版本(如果可用),或者从启用 arm64 支持的源代码构建。前提是你有源代码!
    【解决方案2】:

    最后将范围缩小到这一行,在应用启动的早期调用。

    奇怪的是,将这一行单独添加到一个简单的应用程序不会导致失败,因此我找不到其他一些额外的交互。

    遗憾的是,这不是一个恰当的解释,但至少我现在可以继续前进。希望这个答案会为其他人节省一些时间!

    // We don't want Back button text, move it off-screen
    [[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60.f) forBarMetrics:UIBarMetricsDefault];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-04
      • 2019-07-03
      • 2020-10-26
      • 2013-02-08
      • 2014-01-31
      相关资源
      最近更新 更多