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

Другие вопросы по тегам