打印正在打印整个窗口,而不是视图

时间:2014-10-28 06:04:05

标签: cocoa

我有一个简单的程序,以确保打印工作。

-Subclassed NSObject表示控制器," ViewController

-Subclassed NSViewView

在窗口中添加了custom view,将类设置为View

ViewController制作View代表。 在IB中添加了对象,将类设置为ViewController

IBOutlet添加到ViewController的委派部分,并将其连接到窗口上的自定义视图。

在View中,有一个简单的[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;

这个有效!那么,为什么默认"打印"菜单项打印整个窗口?

1 个答案:

答案 0 :(得分:0)

默认情况下,您不必编写任何打印代码,打印工作正常。但是,它提供默认行为(也就是说,打印整个窗口)。

如果您想要自定义打印行为,您必须编写自己的打印方法。(就像您在极其简单的程序中所做的那样)。您可以将默认打印菜单项链接到您自己的打印方法。