问题
I'm developing a mobile application on Xamarin Forms for UWP, Android and IOS on Visual Studio.
I'm currently testing the app on my computer(Windows 10) and my phone (also Windows 10).
I'm using Zxing MobileBarcodeScanner to scan multiple barcodes.
When i press the back button i call the MobileBarcodeScanner.Cancel().
The only thing that it does is to close the camera. It doesn't depose the MobileBarcodeScanner's UI and i didn't found any solution for that.
Can anyone help me or suggest a solution?
Also the Cancel Button and the Flash Button aren't shown to the scanner UI.
Code:
private void showScanner()
{
var scanner = new MobileBarcodeScanner(App.coreDispatcher)
{
UseCustomOverlay = false,
TopText = "Hold camera up to barcode to scan",
BottomText = "Barcode will automatically scan",
CancelButtonText = "Done",
FlashButtonText = "Flash"
}
var opt = new MobileBarcodeScanningOptions { DelayBetweenContinuousScans = 3000 };
scanner.ScanContinuously(opt, HandleScanResult);
}
protected override bool OnBackButtonPressed()
{
scanner.Cancel();
}
private void HandleScanResult(ZXing.Result result)
{
string msg;
if (result != null && !string.IsNullOrEmpty(result.Text)) // Success
{
msg = result.Text;
}
else // Canceled
{
msg = "Scanning Canceled!";
}
}
回答1:
The only thing that it does is to close the camera. It doesn't depose the MobileBarcodeScanner's UI and i didn't found any solution for that
There is an issue in your code snippets. In the showScanner() method, you have defined a scanner
variable, but in OnBackButtonPressed() method, looks like you have used a global variable also called scanner
.
Maybe the following way should be correct:
MobileBarcodeScanner scanner;
private void showScanner(){
scanner = new MobileBarcodeScanner(App.coreDispatcher) //Here, remove var
{
......
}
}
protected override bool OnBackButtonPressed()
{
scanner.Cancel();
}
And if you have check the Xamarin.Forms sample
It uses the ZXingScannerPage
to host your layout and handle some logics, including Cancel and ToggleTorch etc, see here
Also the Cancel Button and the Flash Button aren't shown to the scanner UI.
Please use Custom Overlay, just set MobileBarcodeScanner.UseCustomOverlay property to true and check the sample code in here
And also ZXing.Net.Mobile Getting Started
来源:https://stackoverflow.com/questions/38528326/zxing-mobile-mobilebarcodescanner-cancel-not-working