2017-08-03 12 views
0

我正在使用ZXing條形碼閱讀器,所以當用戶掃描錯誤的條形碼時,會彈出警報消息,說這是錯誤的條形碼。問題是,掃描器不斷掃描警報消息,並不斷彈出相同的警報。我希望掃描儀暫停,直到用戶關閉警報消息。那是我的代碼,順便說一句,zxing.IsAnalyzing = false;不起作用如何暫停ZXing閱讀,直到用戶關閉Xamarin Forms中的提醒消息?

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)); 
         } 
       }); 
      }; 

回答

2

您可以通過添加名爲_isScanning的bo​​ol字段並將其設置爲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; 
     } 
    }); 
}; 
+0

,你是王的人,感謝它的工作 – Mohanad

+0

我很高興它爲你工作,也不要忘了補投給了答案,如果你認爲我活該。最好的祝福! –

+0

我希望但我的聲望仍然是10,它需要15 .. – Mohanad