【问题标题】:ZXing OnScanResult is called twice on Xamarin.FormsZXing OnScanResult 在 Xamarin.Forms 上被调用两次
【发布时间】:2017-04-18 23:22:09
【问题描述】:

我有一个 Xamarin.Forms 应用程序。我使用 ZXing.Mobile.Forms 扫描二维码;但是,当我将相机对准二维码时,OnScanResult 事件会被调用两次。这是我的代码,忠实再现了建议的 here

    private async void onScanQRCode(object sender, EventArgs e)
    {
        var scanPage = new ZXingScannerPage(); // executed just once

        scanPage.OnScanResult += (result) => {
            // Stop scanning
            scanPage.IsScanning = false; // executed twice (confused)

            // Pop the page and show the result
            Device.BeginInvokeOnMainThread(() => {
                Navigation.PopAsync();
                /* Business code */
                Account scannedAccount = URLInterpreter.Accept(result.Text);
                ViewModel.ProcessNewAccount(scannedAccount);
                /* End of business code */
            });
        };

        // Navigate to our scanner page
        await Navigation.PushAsync(scanPage);
    }

这是调用上述方法的按钮的 XAML:

        <Button x:Name="btnScanCode" Text="Scan QR Code" Clicked="onScanQRCode" />

任何指针?

更新 显然,这只发生在我调试应用程序并且手机连接到 Visual Studio 时。如果我在未附加调试器的情况下启动应用程序,则会触发一次事件。

【问题讨论】:

    标签: xamarin.forms zxing


    【解决方案1】:

    我有同样的问题,这个答案帮助我解决了它:Xamarin.Forms ZXing.Net.Mobile loosing current page after scan result on iOS 10

    你的代码应该是:

    private async void onScanQRCode(object sender, EventArgs e)
    {
        var scanPage = new ZXingScannerPage();
        bool scanFinished = false;
    
        scanPage.OnScanResult += (result) => {
            // Stop scanning
            scanPage.IsScanning = false;
    
            // Pop the page and show the result
            Device.BeginInvokeOnMainThread(async () => {
                if (!scanFinished)
                {               
                    scanFinished = true;
                    Account scannedAccount = URLInterpreter.Accept(result.Text);
                    ViewModel.ProcessNewAccount(scannedAccount);
                    await Navigation.PopAsync();
                }
            });
        };
    
        // Navigate to our scanner page
        await Navigation.PushAsync(scanPage);
    }
    

    我在 iOS 10.3.1 和 ZXing.Net.Forms.Mobile 2.2.9 上进行了测试。

    【讨论】:

      猜你喜欢
      • 2020-02-23
      • 1970-01-01
      • 2018-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-03
      • 2016-04-01
      • 2012-05-05
      相关资源
      最近更新 更多