ウィンドウのサイズを変更したり、スクロールして再描画を強制したりせずに、PDFViewでPDFを表示するにはどうすればよいですか。
必要なことをしているようですsetNeedsDisplay
が、それでも効果はありません。
PDFViewを使用してPDFを表示するために考えられる最も単純なアプリがあります。
基本的に、Xcodeで新しいアプリを作成し、コードを次のように変更します。
// AppDelegate.h
#import <Cocoa/Cocoa.h>
#import <Quartz/Quartz.h>
@interface AppDelegate : NSObject <NSApplicationDelegate>
@property (assign) IBOutlet NSWindow *window;
@property (assign) IBOutlet PDFView *pdfView;
@end
と
// AppDelegate.m
#import "AppDelegate.h"
@implementation AppDelegate
@synthesize window = _window;
@synthesize pdfView = _pdfView;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
NSURL *pdfURL = [[NSBundle mainBundle] URLForResource:@"TestPage" withExtension:@"pdf"];
PDFDocument *document = [[PDFDocument alloc] initWithURL: pdfURL];
self.pdfView.document = document;
}
@end
Appleのコード例PDFKitLinker2でも同じ動作に気づきました。ここでは、PDFをスクロールするか、ウィンドウのサイズを変更してPDFを表示する必要があります。
確かに私はCocoa開発の世界に不慣れですが、PDFを表示する方法を示す本当に小さな例を検索して見つけませんでした。私が作成したものは正しいように見えますが、PDFKitLinker2でさえ正しくないように思われることを考えると、疑問があります。
XcodeプロジェクトのGitリポジトリを作成しました。これは、支援やコメントを行う時間がある人のために問題を示しています。
git clone git@bitbucket.org:sotapme/pdfview_open.git
Xcodeバージョン4.3.3(4E3002)の使用-最新のLion。
助けてくれてありがとう。
動作するソリューション。
空の実装でPDFViewのサブクラスを作成し、それをカスタムビューとして追加して、既存のビューを接続すると機能するという解決策を見つけましたIBOutlet
。
私にはまったく意味がありません:(
//DPPDFView.h
#import <Quartz/Quartz.h>
@interface DPPDFView : PDFView
@end
と
//DPPDFView.m
#import "DPPDFView.h"
@implementation DPPDFView
@end
Appleのドキュメントには次のように書かれています。
PDFViewは、アプリケーションにPDF機能を追加するために処理する必要がある唯一のクラスである可能性があります。PDFデータを表示し、ユーザーがコンテンツを選択したり、ドキュメント内を移動したり、ズームレベルを設定したり、テキストコンテンツをペーストボードにコピーしたりできるようにします。PDFViewは、ページ履歴も追跡します。
PDFViewをサブクラス化して、カスタムPDFビューアを作成できます。
私はこの質問と自己回答を同様の質問で通り過ぎるかもしれない人々に残し、それが彼らにとって薄暗い光の灯台になることを望んでいます。また、より多くのココアの知恵を持っている人が私の考えの誤りを指摘することを願っています。