2014-10-28 64 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