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 に答える