gpt4 book ai didi

xcode - 将自定义 View 打印到打印机时出现问题

转载 作者:行者123 更新时间:2023-12-03 17:11:11 25 4
gpt4 key购买 nike

正在打印自定义 View ,我遇到了困难 - 希望有人能给我指出正确的方向。我已经阅读了所有苹果文档,但它不起作用。我创建了一个简单的程序来测试打印,我对 NSView (MainView) 进行了子类化,并将以下内容添加到了 drawRect 方法中。

@implementation MainView


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

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

[myString drawInRect:dirtyRect];

}

我在窗口上创建了一个自定义 View 并将其类设置为 MainView。

我运行该程序并显示文本 - 到目前为止效果良好。

当我从下拉列表中单击打印时,对话框将打开,预览将显示整个窗口 - 它包括带有最小、最大按钮的上部栏。所以,这是问题#1,为什么它有整个窗口而不是只有 View ?

其次,我在 MainView 中创建了一个打印例程,并将一个下拉菜单项链接到它。

-(IBAction) printTheView{

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

}

这不会在打印预览中产生任何结果。我尝试了各种方法,但没有任何效果(例如: NSSavePanel 和 beginSheetForDirectory... 方法)。上面的代码是我最后一次尝试。

总而言之,我有两个问题:1)为什么第一个打印整个窗口,而不是仅打印 View ?2) 为什么我的自定义打印方法不起作用?

我已经成功打印了一个 NSTextView,但无法获取这个。任何建议/指示/踢将不胜感激。

谢谢。

[编辑]------

我已经部分工作了。我通过 NSObject 将自定义 View 绑定(bind)到 printTheView 方法。在 IB 中,我将下拉菜单项绑定(bind)到窗口上的自定义 View 对象。这有效。

但是,我无法以相同的方式将窗口上的按钮绑定(bind)到打印方法 - 即 CNTL CLICK 并从按钮拖动到对象。

想法?

最佳答案

我通过创建一个单独的 Controller 对象解决了这个问题。所以我有以下内容:

@interface ViewController : NSObject


@interface MainView : NSView

使 ViewController 成为 MainView 的委托(delegate),并为窗口上的自定义 View 创建一个 IBOutlet

IBOutlet MainView *view;

将此打印方法添加到ViewController:

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

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

MainView中,添加了以下打印方法:

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

这一切都有效。然而,剩下的问题是为什么打印菜单项打印整个窗口而不是 View 。我已将其放入一个单独的问题中。

关于xcode - 将自定义 View 打印到打印机时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26578318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com