QLPreviewController: quicklookd не загружается
У меня есть простой код, показывающий простой PDF, используя QLPreviewController. Он отлично работает в симуляторе и в очень простом приложении.
В приложении я действительно хочу, чтобы он работал, он не работает на устройстве. Устройство отображает представление предварительного просмотра, но вместо PDF он просто показывает текст "simple.pdf, Portable Document Format (PDF)" и размер файла ( "301KB" в этом случае).
Интересно, что журнал испускает "Не удалось загрузить quicklookd с ошибкой: операция не может быть завершена. (Cocoa ошибка 4097.)"
Я пробовал:
- Несколько PDF файлов, простой полный текст и IRS W4 PDF. Те же результаты.
- UIDocumentInteractionController. Те же результаты.
Исключено:
- Я связываюсь с QuickLook.framework в фазах сборки.
- [QLPreviewController canPreviewItem:] возвращает YES.
Мой взгляд на наследственность не ужасно сложный; UINavigationController, выходящий из SWRevealViewController. Не важно, насколько мелкий или глубокий я в иерархии навигации, когда PDF является Quicklook'd.
У меня нет идей, и я надеюсь, что кто-то узнает об ошибке.
edit: приложение отлично работает на устройстве iOS 6. Работает в симуляторе на 6.1, 7.0 и 7.1. Сбой на устройстве 7.0, argh!
Ответы
Ответ 1
Это проблема на 64-битных устройствах. Вы можете воспроизвести его в 64-битных iOS 7-симуляторах. О той же ошибке с другими фреймами сообщается здесь:
Невозможно показать модальный ViewController в iOS7
Обновление настроек архитектуры в настройках сборки на "Стандартные архитектуры (включая 64-разрядные) (armv7, armv7s, arm64)" aka $(ARCHS_STANDARD_INCLUDING_64_BIT) устранит проблему. Это, конечно, если у вас есть совместимые версии всех ваших сторонних библиотек.
По соображениям, которые могут знать только инженеры-программисты, устранение различий между делегатами также приводит к обходному пути через iOS 7.0.4. В моем случае изменение внешнего вида, вызвавшее проблему, -
[[UITableView появление] setSeparatorInset: UIEdgeInsetsZero];
Ответ 2
Наконец сузился до этой строки, которая называется ранним во время запуска приложения.
Как ни странно, добавление этой строки в простейшее приложение не приводит к сбою, поэтому есть и другое дополнительное взаимодействие, которое я не могу найти.
К сожалению, не правильное объяснение, но по крайней мере теперь я могу двигаться дальше. Надеюсь, этот ответ спасет кого-то еще некоторое время!
// We don't want Back button text, move it off-screen
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60.f) forBarMetrics:UIBarMetricsDefault];