Вспомогательный вид панели печати отображается в OS X 10.11, но не в 10.10 и 10.9

Мое приложение 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, пока на панели печати, я выбираю свой аксессуар во всплывающей кнопке, если я выбираю его, ничего не отображается, пространство, где должен отображаться вид аксессуара, остается пустым, Никакие сообщения об ошибках не генерируются ни во время компиляции, ни во время выполнения.

У кого-нибудь есть подсказка о том, как это решить, или подсказка, как искать причину такого поведения?

2 ответа

У меня такая же проблема. Я решил это, установив опцию "Использовать автоматическую компоновку", чтобы отключить файл пера просмотра принадлежностей для печати.

Мое приложение делает то же самое, и работает в 10.10

Есть небольшая разница, но к предисловию: мое приложение NSDocumentприложение. При печати я беру NSPrintInfo от NSDocumentи введите его в мой метод печати (код, который вы ввели в свой вопрос)

Выглядит так:

[printView requestPrintWithPrintInfo:[doc printInfo]];

Тогда вместо звонка -printOperationWithView:, Я звоню -printOperationWithView:printInfo:и я передаю printInfo что пришло от отправителя

Из документов Apple, вы должны позвонить -printOperationWithView когда:

/ * Небольшие удобства для использования, когда уместно глобальное NSPrintInfo приложения. Каждый из этих методов вызывает [NSPrintInfo sharedPrintInfo], а затем вызывает метод с аналогичным именем, указанный выше.

Для меня это звучит так, как будто это должно работать в любом случае, но, как я уже сказал, похоже, единственное отличие в нашем коде

Другие вопросы по тегам