Методы делегирования Quicklook/QLPreviewController не вызываются в iOS 10 Xcode 8

В настоящее время я тестирую свою текущую версию в iOS10. Я использую Xcode 8 beta 6 для тестирования. Здесь методы делегирования Quicklook/QLPreviewController не вызывают. Этот кодовый набор работал с версиями XCode 7 и iOS 9.3. Я проверил эту проблему на форуме разработчиков Apple. Но не смог найти ответ. Кто-нибудь исправил эту проблему? (Я использую Objective-C)

Как использовать Quicklook/QLPreviewController в XCode 8 (iOS 10)?

// ----------------- РЕШЕНИЕ для iOS 10 (предварительный просмотр в качестве подпредставления) -------------------

Эта проблема возникает при добавлении средства предварительного просмотра в качестве подпредставления. Затем мы используем строки кода ниже в основном в iOS 9.3 и ниже.

[self addChildViewController:previewer];
self.view addSubview:previewer.view];
[previewer didMoveToParentViewController:self];

В iOS 10 проблема возникает из-за строки кода ниже.

[self addChildViewController:previewer];

Для iOS 10 нам нужно проверить версию и добавить приведенную выше строку кода. Ниже приведен рабочий набор кодов.

    QLPreviewController* previewer = [[QLPreviewController alloc] init];

    previewer.dataSource = self;
    previewer.delegate = self;
    // To avoid iOS 10 previewer issue.
    if (SYSTEM_VERSION_LESS_THAN(@"10.0")) {
        [self addChildViewController:previewer];
    }
    CGFloat width = self.view.frame.size.width;
    CGFloat height = self.view.frame.size.height;
    previewer.view.frame = CGRectMake(0, 102, width, height-300);
    [self.view addSubview:previewer.view];

    [previewer didMoveToParentViewController:self];

2 ответа

Я тоже столкнулся с этой проблемой, но не могу решить эту проблему вашим решением. Вот мой код:

QLPreviewController *preview = [[QLPreviewController alloc] init];
[preview setDataSource:self];
[preview setDelegate:self];

if(SYSTEM_VERSION_LESS_THAN(@"10.0"))
{
    [self addChildViewController:preview];
}

[preview didMoveToParentViewController:self];
[self.view addSubview:preview.view]; 

Этот ответ /questions/45852009/metod-delegata-qlpreviewcontroller-ne-vyizyivaetsya-v-ios-10-no-vyizyivaetsya-esli-vyipolnyaetsya-ranshe-chem-ios-10/45852023#45852023 может также решить проблему, с которой вы столкнулись. Я представляю QLPreviewController, не используя вид контроллера сдерживания.

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