2014-10-28 88 views
0

我有一個簡單的程序,用於確保打印作品。打印打印整個窗口,而不是查看

-Subclassed NSObject的控制器,「ViewController

-Subclassed NSViewView

增加了custom view到窗口,設置類View

製造ViewController委託View。 在IB添加對象,設置類別爲ViewController

添加IBOutlet代表部分ViewController,將其連接到窗口上的自定義視圖。

在視圖中,有一個簡單的[myString drawInRect: rect],其中myString在init中定義爲@"Hi"

當我運行時,程序在視圖中打印"Hi"。當我點擊「Print」菜單項時,打印預覽顯示整個窗口。

更多:我有一個早期的測試程序沒有打印代碼,我運行它,打印預覽只顯示視圖。我已經通過了兩個代碼,並且找不到區別,所以我迷失在爲什麼一個人在工作而另一個不在。

是否有人知道爲什麼打印預覽會顯示整個窗口而不是視圖?

[編輯] ----- 我也創建了一個非常簡單的程序來檢查並有相同的問題。 子類NSViewMainView 添加自定義視圖窗口中,設置類MainView 新增[str drawInRect: dirtyRect withAttributes:nil]; (注; NSString *str = @"Hello";)。

[詳細] -------

我添加了一個打印方法如下所述NSView對象:

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

添加一個按鈕,窗口,它連接到一個IBAction方法在ViewController

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

ViewController我有:

IBOutlet View *view; 

This Works!那麼,爲什麼默認的「打印」菜單項打印整個窗口?

回答

0

默認情況下,您不必編寫任何打印代碼並且打印正常。但是,它提供了默認行爲(又名,打印整個窗口)。

如果你想要自定義打印行爲,你必須編寫自己的打印方法(就像你在非常簡單的程序中那樣)。並且您可以將默認打印菜單項鍊接到您自己的打印方法。

+0

哇,我忘了這個問題仍然活躍(未答覆),我放棄了任何人的迴應。感謝您的迴應,我的解決方案正是您所建議的 - 我創建了自定義打印方法並將打印菜單項鍊接到自定義方法。 – littleDrummerBoy 2015-11-02 13:25:22