ios11 UIDocumentInteractionController presentPreviewAnimated замораживает приложение
У меня проблема с приложением iPad на iOS11, когда я хочу показать предварительный просмотр файлов PDF с этим кодом:
self.documentInteractionController = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:urlPathToDocument]];
[self.documentInteractionController setDelegate:self];
[self.documentInteractionController presentPreviewAnimated:YES];
Это приложение зависает, и я должен убить приложение, она не падает, и не отображается ошибка.
На iOS10 нет проблем, предварительный просмотр PDF-файла отлично отображается без остановки приложения.
Я пытался поместить этот код в блок dispatch_async, но без изменений.
Не могли бы вы помочь мне? Спасибо.
2 ответа
Кажется, это ошибка на моем iPad, после 2 перезагрузок, проблема, кажется, решена
Добавляю свой ответ, потому что столкнулся с похожей проблемой, и этот вопрос возник в поиске решений. Проблема, с которой я столкнулся, заключается в том, что PDF-файл нормально открывается в симуляторе, но когда я пытаюсь открыть его на устройстве, он просто показывает пустую PDF-страницу с названием PDF-файла. Я получил сообщение об ошибке "Не удалось выдать расширение файла для пути".
Однако вот что я нашел:
Генерация моего URL непосредственно из пакета будет работать для симулятора, но не для устройств
// This was not working on device, but did work with simulator
let fileURL = Bundle.main.url(forResource: "SomePDF", withExtension: "pdf")!
self.docVC = UIDocumentInteractionController(url: fileURL)
self.docVC.delegate = self
self.docVC.presentPreview(animated: true)
Поэтому, чтобы посмотреть, что произойдет, я взял тот же самый URL, преобразовал его в данные и сохранил во временный каталог с новым URL. Это закончилось работой:
// Now it opens correctly on both simulator and device
let url = Bundle.main.url(forResource: "SomePDF", withExtension: "pdf")!
let pdfData = try! Data(contentsOf: url)
let temp = NSTemporaryDirectory()
let fileURL = URL(fileURLWithPath: temp).appendingPathComponent("SomePDF.pdf")
try! pdfData.write(to: fileURL)
self.docVC = UIDocumentInteractionController(url: fileURL)
self.docVC.delegate = self
self.docVC.presentPreview(animated: true)
Надеюсь, это поможет кому-нибудь еще столкнуться с этой проблемой. Использовал iPhone X iOS 11.2.1