Quicklook / QLPreviewController委托方法未在iOS 10中调用Xcode 8

时间:2016-08-31 01:19:42

标签: objective-c ios10 xcode8 quicklook qlpreviewcontroller

目前我正在iOS10中测试我当前的版本。我正在使用 Xcode 8 beta 6进行测试。这里 Quicklook / QLPreviewController委托方法没有调用。此代码集已经与XCode 7和iOS 9.3版本一起使用。我在Apple Developer论坛中检查了这个问题。但找不到答案。有谁解决了这个问题? (我正在使用Objective-C)

如何在XCode 8中使用Quicklook / QLPreviewController( 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 个答案:

答案 0 :(得分:1)

我也遇到了这个问题,但我无法通过您的解决方案解决此问题。 这是我的代码:

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]; 

答案 1 :(得分:0)

此答案https://stackoverflow.com/a/41908926/870671也可能解决您所看到的问题。我正在展示我的QLPreviewController,而不是使用视图控制器包含。