【问题标题】:How to pause ZXing reading untill the user close the alert message in Xamarin Forms?如何暂停 ZXing 阅读,直到用户关闭 Xamarin Forms 中的警报消息?
【发布时间】:2017-08-11 20:17:06
【问题描述】:

我正在实现 ZXing 条码阅读器,所以当用户扫描错误的条码时,会弹出一条警告消息,说这是错误的条码。问题是,扫描仪不断扫描警报消息并不断弹出相同的警报。我希望扫描仪暂停,直到用户关闭警报消息。这就是我的代码,顺便说一句,zxing.IsAnalyzing = false;不工作

 zxing = new ZXingScannerView
            {
                HorizontalOptions = LayoutOptions.FillAndExpand,
                VerticalOptions = LayoutOptions.FillAndExpand,
                AutomationId = "zxingScannerView",
            };


            zxing.OnScanResult += (result) =>
            {

                Device.BeginInvokeOnMainThread(async () =>
                {
                    if (!result.Text.Equals(auftrag.code))
                        {
                        zxing.IsAnalyzing = false;
                            await DisplayAlert("Barcode nicht gefunden.", "Der Barcode gehört nicht zu dem gewählten Auftrag.", "OK");

                        }
                        else

                        await Navigation.PushAsync(new AuftragDescription(auftrag));
                        }
                });
            };

【问题讨论】:

    标签: c# xamarin.forms zxing


    【解决方案1】:

    您可以通过添加名为 _isScanning 的布尔字段并将其设置为 true 来解决您的问题。当Zxing“触发”OnScanResult时,它会检查_isScanning是否为真,它将扫描和分析设置为假,并在完成后执行您的工作检查代码或您想要的其他事情它会将 Analyzing and Scanning 设置为 true,您将继续扫描其他条形码。

    Zxing 会一直扫描,但在您显示DisplyAlert 时不会打扰您。

    希望这不会造成混淆,这是满足您需求的最简单方法。

    代码如下:

    // add this bool field in your class
    private bool _isScanning = true;
    // ... 
    // your other code...
    // ... 
    
    zxing = new ZXingScannerView {
        HorizontalOptions = LayoutOptions.FillAndExpand,
        VerticalOptions = LayoutOptions.FillAndExpand,
        AutomationId = "zxingScannerView",
    };
    
    
    zxing.OnScanResult += (result) => {
    
        Device.BeginInvokeOnMainThread(async() => {
    
            if (_isScanning) {
                _isScanning = false;
                zxing.IsAnalyzing = false;
    
                if (!result.Text.Equals(auftrag.code)) { 
                    await DisplayAlert("Barcode nicht gefunden.", "Der Barcode gehört nicht zu dem gewählten Auftrag.", "OK");
    
                } else
    
                      await Navigation.PushAsync(new AuftragDescription(auftrag));
                }
    
                zxing.IsAnalyzing = true;
                _isScanning = true;
            }
        });
    };
    

    【讨论】:

    • 我很高兴它对你有用,如果你认为我应得的,也不要忘记为答案投票。最好的问候!
    • 没关系,最好的问候!祝你编码好运! :D
    猜你喜欢
    • 2020-05-30
    • 2022-11-16
    • 2020-09-11
    • 2015-03-07
    • 2014-06-18
    • 2021-05-25
    • 2019-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多