public override void DocumentOverlayViewControllerDidFinishScanning(MBDocumentOverlayViewController documentOverlayViewController, MBRecognizerResultState state)
            {
                // this method is called on background processing thread. The scanning will resume as soon
                // as this method ends, so in order to have unchanged results at the time of displaying UIAlertView
                // pause the scanning
                documentOverlayViewController.RecognizerRunnerViewController.PauseScanning();

                var title   = "Result";
                var message = "";

                // each recognizer has Result property which contains recognized data after scanning has been finished

                // we can check ResultState property of the Result to see if the result contains scanned information
                if (me.mrtdRecognizer.Result.ResultState == MBRecognizerResultState.Valid)
                {
                    var mrtdResult = me.mrtdRecognizer.Result;
                    message += "MRTD recognizer result:\n" +
                               "PrimaryID: " + mrtdResult.MrzResult.PrimaryID + "\n" +
                               "SecondaryID: " + mrtdResult.MrzResult.SecondaryID + "\n" +
                               "Date of birth: " + mrtdResult.MrzResult.DateOfBirth.Day + "." +
                               mrtdResult.MrzResult.DateOfBirth.Month + "." +
                               mrtdResult.MrzResult.DateOfBirth.Year + ".\n";
                }
                if (me.eudlRecognizer.Result.ResultState == MBRecognizerResultState.Valid)
                {
                    var eudlResult = me.eudlRecognizer.Result;
                    message += "EUDL recognizer result:\n" +
                               "First name: " + eudlResult.FirstName + "\n" +
                               "Last name: " + eudlResult.LastName + "\n" +
                               "Birth data: " + eudlResult.BirthData + "\n" +
                               "Country: " + eudlResult.Country.ToString() + "\n";
                }
                if (me.usdlRecognizer.Result.ResultState == MBRecognizerResultState.Valid)
                {
                    var usdlResult = me.usdlRecognizer.Result;
                    message += "USDL recognizer result:\n" +
                               "First name: " + usdlResult.GetField(MBUsdlKeys.CustomerFirstName) + "\n" +
                               "Last name: " + usdlResult.GetField(MBUsdlKeys.CustomerFamilyName) + "\n" +
                               "City: " + usdlResult.GetField(MBUsdlKeys.AddressCity) + "\n";
                }

                UIApplication.SharedApplication.InvokeOnMainThread(delegate
                {
                    UIAlertView alert = new UIAlertView()
                    {
                        Title   = title,
                        Message = message
                    };
                    alert.AddButton("OK");
                    alert.Show();
                    // after alert dialog is dismissed, you can either resume scanning with
                    // documentOverlayViewController.RecognizerRunnerViewController.ResumeScanningAndResetState(true)
                    // or you can simply dismiss the RecognizerRunnerViewController
                    alert.Dismissed += (sender, e) => me.DismissViewController(true, null);
                });
            }
        partial void StartScanningButton_TouchUpInside(UIButton sender)
        {
            // create a collection of recognizers that will be used for scanning
            var recognizerCollection = new MBRecognizerCollection(new MBRecognizer[] { mrtdRecognizer, eudlRecognizer, usdlRecognizer });

            // create a settings object for overlay that will be used. For ID it's best to use DocumentOverlayViewController
            // there are also other overlays available - check iOS documentation
            var documentOverlaySettings = new MBDocumentOverlaySettings();
            var documentOverlay         = new MBDocumentOverlayViewController(documentOverlaySettings, recognizerCollection, customDelegate);

            // finally, create a recognizerRunnerViewController
            var recognizerRunnerViewController = MBViewControllerFactory.RecognizerRunnerViewControllerWithOverlayViewController(documentOverlay);

            // in ObjC recognizerRunnerViewController would actually be of type UIViewController<MBRecognizerRunnerViewController>*, but this construct
            // is not supported in C#, so we need to use Runtime.GetINativeObject to cast obtained IMBReocognizerRunnerViewController into UIViewController
            // that can be presented
            this.PresentViewController(ObjCRuntime.Runtime.GetINativeObject <UIViewController>(recognizerRunnerViewController.Handle, false), true, null);
        }
 public override void DocumentOverlayViewControllerDidTapClose(MBDocumentOverlayViewController documentOverlayViewController)
 {
     overlayVCDelegate.CloseButtonTapped(documentOverlayViewController);
 }
 public override void DocumentOverlayViewControllerDidTapClose(MBDocumentOverlayViewController documentOverlayViewController)
 {
     me.DismissViewController(true, null);
 }
 public override void DocumentOverlayViewControllerDidFinishScanning(MBDocumentOverlayViewController documentOverlayViewController, MBRecognizerResultState state)
 {
     overlayVCDelegate.ScanningFinished(documentOverlayViewController, state);
 }