1

I am embedding a QLPreviewController in my own view controller by adding it as a child view controller like this (contentArea is a UIView property that determines which part of the screen the preview should use):

    QLPreviewController* preview = [[QLPreviewController alloc] init];
    preview.dataSource = self;
    preview.delegate = self;
    [self addChildViewController:preview];
    CGFloat w = self.contentArea.frame.size.width;
    CGFloat h = self.contentArea.frame.size.height;
    preview.view.frame = CGRectMake(0, 0,w, h);
    [self.contentArea addSubview:preview.view];
    [preview didMoveToParentViewController:self];
    self.qlPreviewController = preview;

This works so far. However, when I open a PDF, I do not get the page scrubber that is shown on the right side when the QLPreviewController is shown full screen (see screenshot).

Page scrubber shown when presented as modal view controller

Using DCIntrospect I see that there is a special subview of type QLScrubView responsible for this:

...
| <QLScrubView: 0x1274e990; frame = (963 64; 61 704); autoresize = LM+H; layer = <CALayer: 0x1274eb30>>
|   | <QLThumbnailView: 0x11fc6460; frame = (17 329; 32 45); layer = <CALayer: 0x11fcb4b0>>
|   | <QLThumbnailView: 0x11fd45a0; frame = (17 382; 32 45); layer = <CALayer: 0x11fbe830>>
|   | <QLThumbnailView: 0x1274dae0; frame = (9 268; 48 61); layer = <CALayer: 0x1273b860>>
...

However, this scrub view is missing in the embedded use case.

Any ideas how to make this appear?

4

1 回答 1

0

当您有多个页面时,它会自动显示。我猜你的PDF有问题。尝试其他来源的其他 PDF,看看是否遇到同样的问题。我一直在使用 PDF,并且清理器显示得很好。

我的另一个想法是调整预览控制器的大小可能不正常。尝试将预览控制器加载为模态视图控制器(无父级),并查看是否仍隐藏擦洗器。

于 2013-02-11T05:23:33.093 回答