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 中显示选择器?
更新
它似乎在带有 PrinterSimulator 运行 的 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
的引用
调用 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 中显示选择器?
更新
它似乎在带有 PrinterSimulator 运行 的 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
的引用