如何在 iOS 上的 NativeScript 中显示打印机选取器
How to Display the Printer Picker in NativeScript on iOS
调用UIPrinterPickerController
后,我无法在 NativeScript 中显示打印机选取器。
这是我的代码:
var printPicker = UIPrinterPickerController.printerPickerControllerWithInitiallySelectedPrinter(null);
console.log("printPicker: " + printPicker);
var found = printPicker.presentAnimatedCompletionHandler(false, function(printerPicker, userDidSelect, error) {
if (error != null) {
console.log("error: " + error);
}
console.log("printerPicker: " + printerPicker);
console.log("userDidSelect: " + userDidSelect);
});
console.log("found: " + found);
这是输出:
CONSOLE LOG file:///app/pages/main/main-page.js:16:16: printPicker: <UIPrinterPickerController: 0x146e948b0>
2016-04-22 15:19:17.101 checkInApp[349:41167] WARNING: Calling -[UIPrinterPickerController presentAnimated:completionHandler:] on iPad
CONSOLE LOG file:///app/pages/main/main-page.js:24:16: found: true
CONSOLE LOG file:///app/pages/main/main-page.js:16:16: printPicker: <UIPrinterPickerController: 0x146e948b0>
2016-04-22 15:19:19.627 checkInApp[349:41167] WARNING: Calling -[UIPrinterPickerController presentAnimated:completionHandler:] on iPad
CONSOLE LOG file:///app/pages/main/main-page.js:24:16: found: false
CONSOLE LOG file:///app/pages/main/main-page.js:21:20: printerPicker: <UIPrinterPickerController: 0x146e948b0>
CONSOLE LOG file:///app/pages/main/main-page.js:22:20: userDidSelect: false
在这里收到有关如何在 NativeScript 中调用它的答案后,我可以验证我的回调是否确实运行。但是,如果我点击运行上述代码一次的按钮,回调不会触发(我假设这是选取器应该显示的点。然后,如果我再次点击它,回调会触发,userDidSelect
为 false。
我已经读到您可以使用子类来控制选取器的显示printerPickerControllerParentViewController
,但我认为它会默认只从主视图中显示选取器。
如何从 NativeScript 中显示选取器?
更新
它似乎在运行打印机模拟器的iOS模拟器上运行良好。
更新 2
实际上,它正在iPhone 6模拟器上工作。它不适用于iPad模拟器或实际的iPad设备。我想我在某处读到需要将选取器作为 PopOver 打开,但我不确定如何实现它。任何帮助将不胜感激。
好的,问题是您必须在iPad上的弹出窗口中打开UIPrinterPickerController
。因此,我们需要检测运行应用程序的设备并调用适当的方法。这是如何完成的:
if ( ! UIDevice.currentDevice().userInterfaceIdiom == UIUserInterfaceIdiomPad) {
printPicker.presentAnimatedCompletionHandler(false, completionHandler);
} else {
printPicker.presentFromRectInViewAnimatedCompletionHandler(view.frame, view, false, completionHandler);
}
我仍在寻找对view
和view.frame
的参考 - 我这里有一个悬而未决的问题。
更新
正确参数引用的答案在这里。基本上,在loaded
处理程序中,您将获得对带有 args.object.ios.view
的view
的引用。
相关文章:
- 从桌面读取python文件时高亮显示代码
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何在生成下载文件时显示加载动画
- React重新渲染但未显示正确的组件
- nodejs-expressjs上传图像并显示它们
- 使用JSP从服务器检索和显示图像
- 音频控件在mouseover上显示,在mouseout上淡出
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 显示5秒后隐藏潜水
- 画廊图像未显示
- 不显示带有本地json文件数据的谷歌地图脚本
- 如何将json数据显示为html
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 高亮显示时编辑文本大小和颜色
- 有时数据是't显示在浏览器中
- 当鼠标悬停在文本中的单词上时显示警报
- 如何在 iOS 上的 NativeScript 中显示打印机选取器
- Angular.js, Highcharts, Phantomjs PDF打印机-图表不显示