我正在实现ZXing条形码阅读器,因此当用户扫描错误的条形码时,会弹出警报消息,说这是错误的条形码。问题是,扫描程序会不断扫描警报消息后面,并不断弹出相同的警报。我希望扫描程序暂停,直到用户关闭警报消息。这是我的代码,顺便说一下,Zxing。正在分析=假;不工作
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));
}
});
};
> 您可以通过添加名为 _isScanning 的布尔字段并将其设置为 true 来解决问题。当Zxing
"触发"OnScanResult
时,它将检查_isScanning
是否为真,它将扫描和分析设置为false,它将执行您的工作检查代码或您想要的其他操作,完成后它将将分析和扫描设置为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;
}
});
};