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
注意:- 我没有您的代码。这只是与您的问题相关的问题和解决方案之一。
我已经在我的应用程序中实现了 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
注意:- 我没有您的代码。这只是与您的问题相关的问题和解决方案之一。