AirPrint 对话框中缺少按钮

Missing buttons from AirPrint dialog

我已经在我的应用程序中实现了 AirPrinting,但我遇到了一个奇怪的问题。每当出现打印对话框时,都不会显示取消或 Done/Print 按钮,如下图所示。

我使用的代码如下:

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];  
}  

有没有人遇到过这个问题并且知道如何纠正?真正奇怪的是这些隐藏按钮的操作仍然有效;所以如果我点击打印按钮应该在的位置,它就会打印出来,同样我可以通过点击左上角应该是取消按钮的位置来关闭对话框。

干杯!

p.s 使用最新版本的 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] 我通过从我的主项目中逐步引入相同的元素来增强新项目,直到引入相同的 Pods 并设置相同的 UI 结构,并添加 UI 图片元素。它没有完全相同的视图数量,并且它们做的事情与我的主要项目不同,但内存使用情况相似。然而,它仍然有效。工作区损坏是 Xcode 中的一件事吗,在任何 UI 中都没有出现的幕后情况可以解释这一点?

[编辑 4] 我刚刚创建了一个全新的项目,重新安装了所有 pods,然后将我的源文件从我的原始项目移动到新项目。平息惊喜,新项目依旧存在这个问题

[编辑 5] 已解决!我终于找到了这个问题,部分归功于下面接受的答案中的提示。这是因为将全局色调颜色设置为清晰,而且每个控制器中的单独视图也将色调颜色设置为清晰。这影响了正在显示的对话框,因此按钮不可见。一旦我将视图更改为色调的实际颜色 属性,打印对话框按钮再次可见。

我也使用了您的代码,它按预期工作,它在 iOS 11 中也有取消和打印按钮。这是代码

([UIPrintInteractionController canPrintURL:self.pdfUrl]) {
        UIPrintInfo *aPrintInfo = [UIPrintInfo printInfo];
        aPrintInfo.outputType = UIPrintInfoOutputGeneral;
        aPrintInfo.jobName = @"test job";
        UIPrintInteractionController *aPrintController = [UIPrintInteractionController sharedPrintController];
        aPrintController.showsNumberOfCopies=YES;
        aPrintController.showsPaperSelectionForLoadedPapers=YES;
        aPrintController.printingItem = self.pdfUrl;
        aPrintController.printInfo = aPrintInfo;
        [aPrintController presentAnimated:YES completionHandler:NULL];
    }

请检查 pdfUrl 是否有效 URL,同样在 UI pdf 是否有效 url。

下面是我正在使用的url

self.pdfUrl = [NSURL URLWithString:@"http://unec.edu.az/application/uploads/2014/12/pdf-sample.pdf"];

编辑 1:-

附上屏幕截图

UIPrintInteractionController 代码没有直接问题。正如您提到的单击完成和取消按钮按预期工作。唯一的问题是按钮的可见性。

尝试在呈现打印控制器之前更改导航栏色调。

self.navigationBar.barStyle = UIBarStyle.Black
self.navigationBar.tintColor = .black

注意:- 我没有您的代码。这只是与您的问题相关的问题和解决方案之一。