Xamarin.iOS:ZXing扫描程序在处置

时间:2018-01-24 08:34:41

标签: xamarin xamarin.forms xamarin.ios

使用ZXing BarcodeScanner Crossplatform Library我创建了下面的代码来扫描将返回扫描文本结果的条形码。

async static public Task<String> Scan()    
{
    var scanner = new MobileBarcodeScanner
    {
        TopText = "Hold the camera up to the barcode\nAbout 6 inches away",
        BottomText = "Wait for the barcode to automatically scan!"
    };

    try
    {
        //This will start scanning
        ZXing.Result result = await scanner.Scan();
        string output = result.Text;
        scanner.Cancel();
        return output;
    }
    catch (Exception)
    {
        scanner.Cancel();
        return null;
    }
}

在Android上运行良好。 但是在iOS中,它会在处理时抛出错误,如下所示。

Unhandled Exception:

System.ObjectDisposedException: Cannot access a disposed object.
Object name: 'ZXingScannerViewController'. occurred 

在iOS中点击scanner.Cancel()时会发生这种情况。

任何解决方案为什么在iOS中会发生这种情况。

1 个答案:

答案 0 :(得分:0)

您无需手动拨打scanner.Cancel()。请参阅official usage

单击取消按钮后,

MobileBarcodeScanner已被处理掉,因此如果再次调用它,应用程序将崩溃。