/ / QLPreviewController метод делегата не викликається в iOS 10, але його викликають, якщо він працює раніше, ніж iOS 10 - aim-c, ios10, qlpreviewcontroller, pdf-reader

QLPreviewController делегований метод не отримує виклик в iOS 10, але він отримує виклик, якщо він працював раніше, ніж iOS 10 - об'єктив-c, ios10, qlpreviewcontroller, pdf-читач

Ось мій код. Це може здатися зайвим питанням, але мій сценарій інший, оскільки я не додаю QLPreviewController як підпрезгляд, але присутній як контролер.

Після завантаження з Dropbox я представляю це як-

    self.pdfViewController = [[QLPreviewController alloc] init];
self.pdfViewController.delegate = self;
self.pdfViewController.dataSource = self;

[self presentViewController:self.pdfViewController animated:YES completion:nil];

і я теж маю QLPreviewControllerDataSource, QLPreviewControllerDelegate вказані як протокол. Крім того, він працює, якщо він працює раніше, ніж iOS 10.0.

Будь ласка, допоможи мені.

Відповіді:

0 для відповіді № 1

Схоже, iOS 10 змінив так QLPreviewController представлено. На iOS 9, коли я попередньо переглядаю зображення, представляючи QLPreviewController модально я бачу приємний ефект збільшення та початковий ефектстан попереднього перегляду з чорним фоном та навігацією та панеллю інструментів приховано. Я можу торкнутися зображення, щоб зробити смужки видимими (що змінює фон на білий). Натискання знову перемикає стан.

На iOS 10 той самий код призводить до появи білого перегляду фону, а анімація масштабування неправильна (здається, вона з’являється внизу екрана).

Я виявив, що реалізація цього практично недокументованого нового методу джерела даних для iOS 10 вирішила проблему:

- (UIView* _Nullable)previewController:(QLPreviewController *)controller
transitionViewForPreviewItem:(id <QLPreviewItem>)item
{
return [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:MIDPhotoImageRowIndex_Image inSection:MIDPhotoSectionIndex_Image]];
}

Погляд, який я повертаю, - це той самий погляд, який previewController:frameForPreviewItem:inSourceView: використовується як орієнтир для вихідного кадру вмісту (тобто подання зображення в комірці моєї таблиці).

The документація для цього методу делегата на момент написання просто сказано "Немає огляду".

Реалізація цього методу означала, що previewController:frameForPreviewItem:inSourceView: тепер називається на iOS 10. Я просто хотів би, щоб був спосіб за замовчуванням до початкового чорного фону без навігаційних панелей.