0

我的 OS X 应用程序支持 10.9 - 10.11。我尝试通过添加如下打印附件视图来为打印操作添加一些选项:

MyPrintView *printView = [[MyPrintView alloc] initWithData: [self myData]];
NSPrintOperation *printOperation = [NSPrintOperation printOperationWithView: printView];
NSPrintPanel *printPanel = [printOperation printPanel];
[printPanel addAccessoryController:[[MyPrintAccessory alloc] init]];
if (printOperation)
{
    [printOperation runOperationModalForWindow:_window delegate:_window didRunSelector:nil contextInfo:nil];
}

附件视图由控制器定义

@interface MyPrintAccessory : NSViewController <NSPrintPanelAccessorizing>

以及在 xib 文件中定义的视图。

在 El Capitan 中一切正常,但在 Yosemite 和 Mavericks 中,打印面板让我在弹出按钮中选择我的配件,如果我选择它,则不会显示任何内容,应该显示配件视图的空间仍然是空的. 在编译和运行时都不会生成错误消息。

有没有人提示如何解决这个问题,或者提示如何寻找这种行为的原因?

4

2 回答 2

1

我有同样的问题。我通过将选项“使用自动布局”设置为关闭我的打印附件视图笔尖文件来解决它。

于 2018-03-25T13:16:29.707 回答
0

我的应用程序做同样的事情,并在 10.10

有细微的差别,但要前言:我的应用程序是NSDocument基于 - 的应用程序。打印时,我NSPrintInfo从 中获取NSDocument,并将其提供给我的打印方法(您嵌入在问题中的代码)

看起来像这样:

[printView requestPrintWithPrintInfo:[doc printInfo]];

然后,-printOperationWithView:我不打电话,而是打电话-printOperationWithView:printInfo:,然后传递printInfo来自发件人的

从 Apple 的文档中,您应该在以下情况下调用-printOperationWithView

/* 稍微方便,当应用程序的全局 NSPrintInfo 合适时使用。这些方法中的每一个都会调用 [NSPrintInfo sharedPrintInfo],然后调用上面列出的同名方法。

对我来说,这听起来无论如何都应该起作用,但就像我说的那样,这似乎是我们代码中唯一的区别

于 2016-04-11T14:44:15.940 回答