【问题标题】:Print is printing entire window, not the View打印正在打印整个窗口,而不是视图
【发布时间】:2015-10-30 13:55:43
【问题描述】:

我有一个简单的程序,用于确保打印正常。

- 为控制器子类化 NSObject,“ViewController

-子类化NSViewView

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

View 指定ViewController 代表。 在IB 中添加对象,将类设置为ViewController

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

在 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];
}

向窗口添加了一个按钮,将其链接到ViewController 中的IBAction 方法:

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

ViewController我有:

IBOutlet View *view;

这行得通!那么,为什么默认的“打印”菜单项会打印整个窗口呢?

【问题讨论】:

    标签: cocoa


    【解决方案1】:

    默认情况下,您无需编写任何打印代码,打印即可。但是,它提供了默认行为(也就是打印整个窗口)。

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

    【讨论】:

    • 哇,我忘记了这个问题仍然有效(未回答),我放弃了任何人的回答。感谢您的回复,我的解决方案正是您建议的 - 我创建了自定义打印方法并将打印菜单项链接到自定义方法。
    猜你喜欢
    • 1970-01-01
    • 2016-03-16
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    相关资源
    最近更新 更多