1

カスタム ビューの印刷に取り組んでいますが、問題が発生しています。誰かが私を正しい方向に向けてくれることを願っています。私はすべての Apple ドキュメントを読みましたが、うまくいきません。印刷をテストする簡単なプログラムを作成し、NSView (MainView) をサブクラス化し、drawRect メソッドに以下を追加しました。

@implementation MainView


- (void)drawRect:(NSRect)dirtyRect{
  [super drawRect:dirtyRect];

  NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:@"Hi"];

  [myString drawInRect:dirtyRect];

}

ウィンドウにカスタム ビューを作成し、そのクラスを MainView に設定しました。

プログラムを実行すると、テキストが表示されます。これまでのところ問題ありません。

プルダウンから印刷をクリックすると、ダイアログが開き、プレビューにウィンドウ全体が表示されます。これには、最小、最大ボタンのある上部バーが含まれます。では、これが質問 1 です。ウィンドウ全体とビューだけがあるのはなぜですか?

次に、MainView で印刷ルーチンを作成し、それにプルダウン メニュー項目をリンクしました。

-(IBAction) printTheView{

NSRect r = [self bounds];
[[NSPrintOperation printOperationWithView:self] runOperation];
[self dataWithPDFInsideRect:r];

}

これにより、印刷プレビューには何も表示されません。さまざまな方法を試しましたが、何も機能しませんでした (例: NSSavePanel および beginSheetForDirectory... メソッド)。上記のコードは私の最後の試みでした。

要約すると、2 つの質問があります。2) カスタム印刷方法が機能しないのはなぜですか?

NSTextView を正常に印刷しましたが、これを取得するために縫い合わせることができません。提案/ポインタ/キックをいただければ幸いです。

ありがとうございました。

[編集] - - -

私はそれを部分的に機能させています。NSObject を介してカスタム ビューを printTheView メソッドにバインドしていました。IB では、プルダウン メニュー項目をウィンドウの Custom View オブジェクトにバインドしました。これは機能します。

ただし、ウィンドウ上のボタンを同じ方法で印刷メソッドにバインドすることはできません。つまり、CNTL CLICK でボタンからオブジェクトにドラッグします。

考え?

4

1 に答える 1

1

controller別のオブジェクトを作成することでこれを解決しました。だから私は次のものを持っています:

@interface ViewController : NSObject


@interface MainView  :  NSView

ウィンドウのカスタム ビューのデリゲートViewControllerMainView作成し、作成しました。IBOutlet

IBOutlet MainView *view;

この印刷メソッドを に追加しましたViewController:

-(IBAction)printToPDF:(id)sender{
[view printPDF];
}

ウィンドウにボタンを追加し、それを の printToPDF メソッドにリンクしましたViewController

MainView、次の print メソッドが追加されました。

-(void)printPDF{
NSRect r = [self bounds];
[[NSPrintOperation printOperationWithView:self] runOperation];
[self dataWithPDFInsideRect:r];
}

これはすべて機能します。ただし、残りの問題は、印刷メニュー項目がビュー全体に対してウィンドウ全体を印刷する理由です。私はそれを別の質問に入れました。

于 2014-10-28T15:57:06.157 に答える