Search code examples
xamarin.iosnavigationzxing

Xamarin iOS Zxing with ZXingScannerView


Need to navigate to other view as soon as Scan completes
Using Zxing with ZXingScannerView

Using this code

scannerView.StartScanning(async (result) =>
{
    if (!ContinuousScanning)
    {
        Console.WriteLine("Stopping scan...");
        Console.WriteLine("Result: " + result.Text);
        scannerView.StopScanning();
        if (result != null)
        {
            await GetScannedDetails(result.Text);
            // here i need to navigate to other screen
        }
    }

    var evt = this.OnScannedResult;
    if (evt != null) evt(result);
}, this.ScanningOptions);


When i tried navigating I got this error
Consistency error: you are calling a UIKit method that can only be invoked from the UI thread.


Solution

  • The issue you are having is, you try to run UI related code inside async task. Do the navigation inside main thread

                BeginInvokeOnMainThread(
                    () =>
                    {
                        scannerView.StopScanning();
                        // Navigate code goes here
                    });