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