Cocoa 我怎样才能得到;“页面属性”;打印对话框中的选项?

Cocoa 我怎样才能得到;“页面属性”;打印对话框中的选项?,cocoa,printing,nsprintoperation,Cocoa,Printing,Nsprintoperation,我正在编写的程序在OSX10.5Leopard下运行。我的目标将其基本SDK和部署目标都设置为Mac OS X 10.5。启动打印时,“打印”对话框不会显示“页面属性”选项,用户可以在其中选择页面大小和方向 在Leopard下运行的其他程序显示此选项: 以下是启动打印的代码: -(void)print { NSPrintInfo *printInfo = [NSPrintInfo sharedPrintInfo]; TemperaturePressurePrintView *

我正在编写的程序在OSX10.5Leopard下运行。我的目标将其基本SDK和部署目标都设置为Mac OS X 10.5。启动打印时,“打印”对话框不会显示“页面属性”选项,用户可以在其中选择页面大小和方向

在Leopard下运行的其他程序显示此选项:

以下是启动打印的代码:

-(void)print {
    NSPrintInfo *printInfo = [NSPrintInfo sharedPrintInfo];
    TemperaturePressurePrintView *printView = [[TemperaturePressurePrintView alloc] initWithFrequencies:frequencies];
    if (printView) {
        [[NSPrintOperation printOperationWithView:printView printInfo:printInfo] runOperation];
        [printView release];
    }
}

我需要做什么才能让页面属性显示在打印对话框中?

这是一件很难搜索的事情,因为结果主要是关于使用打印面板,而不是编程。我终于找到了一条线索,其中提到了
NSPrintPanelOptions
NSPrintPanel
-setOptions:
方法

这段代码完成了我需要的:

-(void)print {
    NSPrintInfo *printInfo = [NSPrintInfo sharedPrintInfo];
    TemperaturePressurePrintView *printView = [[TemperaturePressurePrintView alloc] initWithFrequencies:frequencies];
    if (printView) {
        NSPrintOperation *op = [NSPrintOperation printOperationWithView:printView printInfo:printInfo];
        [[op printPanel] setOptions:[[op printPanel] options] | NSPrintPanelShowsPageSetupAccessory];
        [op runOperation];
        [printView release];
    }
}

在最初的答案发布几年后,macOS Sierra似乎在设置了“NSPrintPanelShowsPageSetupAccessory”选项的面板行为中引入了一个bug。无效的值(例如规模大得离谱)会导致崩溃,而不是显示警报表

幸运的是,有一个解决办法。使用

NSPrintPanelShowsPaperSize | NSPrintPanelShowsOrientation | NSPrintPanelShowsScaling

取而代之的似乎是一个工作正常的面板。

需要注意的是,此代码段是标准[myView print:nil]的替代品;操作,但它允许您首先自定义打印对话框。很好,清晰的解决方案。谢谢