处理打印自定义视图和我遇到困难 - 希望有人能指出我正确的方向。我已经读过每个苹果文档,但它不工作。 我创建了一个简单的程序来测试打印,我subclassed NSView(MainView),并将以下添加到drawRect方法。打印自定义视图到打印机的问题
@implementation MainView
- (void)drawRect:(NSRect)dirtyRect{
[super drawRect:dirtyRect];
NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:@"Hi"];
[myString drawInRect:dirtyRect];
}
我在窗口上创建了一个自定义视图,并将它的类设置为MainView。
我运行程序和文本出现 - 很好迄今。
当我从下拉菜单中单击打印时,对话框打开,预览显示整个窗口 - 它包括带有最小,最大按钮的上部栏。所以,这是问题#1,为什么它只有整个窗口而不是视图?
其次,我在MainView中创建了一个打印例程,并将一个下拉菜单项链接到它。
-(IBAction) printTheView{
NSRect r = [self bounds];
[[NSPrintOperation printOperationWithView:self] runOperation];
[self dataWithPDFInsideRect:r];
}
这不会在打印预览中产生任何结果。我尝试了各种方法,没有任何工作(例如:NSSavePanel和beginSheetForDirectory ...方法)。上面的代码是我最后一次尝试。
总之,我有两个问题: 1)为什么第一个打印整个窗口,而不仅仅是视图? 2)为什么我的自定义打印方法不起作用?
我已经成功地打印了一个NSTextView,但无法缝合得到这个。任何建议/指针/踢将不胜感激。
谢谢。
[编辑] ------
我有它的部分工作。我通过NSObject将自定义视图绑定到printTheView方法。在IB中,我将下拉菜单项绑定到窗口上的Custom View对象。这工作。但是,我不能以同样的方式将窗口上的按钮绑定到打印方法 - 即CNTL单击并从按钮拖动到对象。
想法?