QuickLook не может загрузить некоторые файлы
Фон
Я пытаюсь открыть некоторые файлы через QuickLook. У меня есть.docm и.pdf, с которыми я смог воспроизвести эту ошибку. Сначала я думал, что это из-за макросов документов Microsoft Office, но так как я получаю сообщение об ошибке с PDF размером более 100 МБ, мне интересно, что-то не так с QuickLook.
ошибка
[default] View service did terminate with error:
Error Domain=_UIViewServiceInterfaceErrorDomain Code=3 "(null)"
UserInfo={Message=Service Connection Interrupted} #Remote
Эта ошибка неоднократно выдается из QuickLook. Из того, что я видел, эта ошибка, похоже, встречается только при использовании симулятора и попытке отправить электронное письмо. Я использую iPhone 7+ и могу воспроизводить каждый раз.
Мне интересно, могут ли файлы, которые я использую, иметь проблемы с ними.
тестирование
Я пробовал следующие файлы с разными результатами
- 100 МБ.pdf - Успех
- 100MB .doc - Успех
- 17MB .docm - Ошибка
- 85 МБ.docx - Успех
- 100 МБ.pdf - сбой (в отличие от первого, этот загружает файл, но несколько раз мигает, пока не перейдет к экрану "Ошибка" QuickLook)
Вопросы
Есть ли какие-либо ограничения по размеру или тайм-аут на QuickLook, которые могут вызвать эту странную ошибку?
0 ответов
На всякий случай, если это происходит в 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)
})
Это исправлено для меня.