ios - AirPrint 对话框中缺少按钮

标签 ios objective-c airprint

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

enter image description here

我使用的代码如下:

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

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

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

最佳答案

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

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

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

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

关于ios - AirPrint 对话框中缺少按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48145098/

相关文章:

ios - 如何在不通过 segue 实例化的情况下预加载或缓存目标 View Controller

ios - uiview的随机颜色

objective-c - iOS和Airprint-切碎的打印PDF

objective-c - AirPrint 连接被拒绝错误

iphone - 在 Xcode 中存档不产生存档

ios - 异步改变 subview

iphone - 将指针设置为 nil,objective-c

ios - 需要显示显示两个 CLLocation 引脚的屏幕

iphone - 向 ShareKit 添加打印选项

ios - Store Kit 在第二次请求时崩溃