Я реализовал AirPrinting из своего приложения, но столкнулся со странной проблемой. Всякий раз, когда появляется диалоговое окно печати, кнопки «Отмена» или «Готово/Печать» не отображаются, как показано на следующем рисунке.
Код, который я использую, выглядит следующим образом:
if ([UIPrintInteractionController canPrintURL:pdfUrl]) {
UIPrintInfo *aPrintInfo = [UIPrintInfo printInfo];
aPrintInfo.outputType = UIPrintInfoOutputGeneral;
aPrintInfo.jobName = [NSString stringWithFormat:@"%@-PRINT",[[NSUserDefaults standardUserDefaults] stringForKey:@"Kiosk ID"]];
UIPrintInteractionController *aPrintController = [UIPrintInteractionController sharedPrintController];
aPrintController.showsNumberOfCopies=YES;
aPrintController.showsPaperSelectionForLoadedPapers=YES;
aPrintController.printingItem = pdfUrl;
aPrintController.printInfo = aPrintInfo;
[aPrintController presentAnimated:YES completionHandler:NULL];
}
Кто-нибудь сталкивался с этой проблемой и знает, как исправить? Что действительно странно, так это то, что действия для этих скрытых кнопок все еще работают; поэтому, если я нажму там, где должна быть кнопка печати, она будет напечатана, и я также могу закрыть диалоговое окно, нажав в левом верхнем углу, где должна быть кнопка «Отмена».
Ваше здоровье!
PS при использовании последней версии IOS 11 проблема возникает в симуляторе и на устройстве.
[Изменить] Я только что протестировал пример печати от Apple, найденный по адресу https://developer.apple.com/library/content/samplecode/PrintBanner/Introduction/Intro.html#//apple_ref/doc./uid/DTS40013422-Intro-DontLinkElementID_2
и хотя код для вызова диалогового окна AirPrint очень похож (особенно после того, как я немного подправил свой код), демонстрационный код работал, как и ожидалось (кнопки видны), а мой код по-прежнему не работает. Очень запутанно.
[Редактировать 2] Использование приведенного выше примера кода в новом проекте также работает, как и ожидалось. Тем не менее, в моем полном приложении это не так. У кого-нибудь есть опыт, почему это мое? Возможно, на системные диалоги влияет размер приложения? Маловероятно, но с моим приложением, использующим этот код, определенно что-то не так, и это неочевидно.
[Редактировать 3] Я улучшил новый проект, постепенно добавляя те же элементы из моего основного проекта, вплоть до добавления тех же модулей и настройки той же структуры пользовательского интерфейса и добавления элементов UIImage. У него не было точно такого же количества просмотров, и они не выполняли те же действия, что и мой основной проект, но использование памяти было аналогичным. И тем не менее, это сработало. Являются ли повреждения рабочей области вещью в Xcode, чем-то за кулисами, не представленным ни в одном пользовательском интерфейсе, который мог бы объяснить это?
[Редактировать 4] Я только что создал совершенно новый проект, переустановил все модули, а затем переместил исходные файлы из исходного проекта в новый проект. Успокойте сюрприз, проблема все еще остается в новом проекте.
[Изменить 5] Решено! Наконец-то я нашел проблему, отчасти благодаря подсказке из принятого ответа ниже. Это произошло из-за того, что глобальный цвет оттенка был установлен на Clear, но также имелись отдельные представления в каждом контроллере, которые также устанавливали цвет оттенка на Clear. Это повлияло на отображаемый диалог, и поэтому кнопки были невидимы. Как только я изменил Views, чтобы иметь фактический цвет для свойства Tint, кнопки диалога печати снова стали видны.