From 27cbeda87c29e8e0266314032af194171696fab1 Mon Sep 17 00:00:00 2001 From: scan-mayank Date: Wed, 9 Sep 2026 19:53:11 +0530 Subject: [PATCH] NET DS 9.0.2-Beta.1: iOS Hot fix - CreateWith function and SBSDKContentValidationCallback fixed. --- .../MainViewController.DataDetectors.cs | 127 +++++++++++++++--- .../ScanbotSdkExample.iOS.csproj | 2 +- 2 files changed, 106 insertions(+), 23 deletions(-) diff --git a/NET/ScanbotSdkExample.iOS/Controller/MainViewController.DataDetectors.cs b/NET/ScanbotSdkExample.iOS/Controller/MainViewController.DataDetectors.cs index c857c48..8e38243 100644 --- a/NET/ScanbotSdkExample.iOS/Controller/MainViewController.DataDetectors.cs +++ b/NET/ScanbotSdkExample.iOS/Controller/MainViewController.DataDetectors.cs @@ -8,7 +8,7 @@ public partial class MainViewController private void ScanMrz() { var configuration = new SBSDKUI2MRZScannerScreenConfiguration(); - SBSDKUI2MRZScannerViewController.PresentOn(this, configuration, (controller, result, error) => + var vc = SBSDKUI2MRZScannerViewController.CreateWith(configuration, (controller, result, error) => { if (error != null) { @@ -20,23 +20,48 @@ private void ScanMrz() return; ShowPopup(this, result.MrzDocument.ToFormattedString()); + }, PerformMrzDismissFunc); // performDismiss + + PresentViewController(vc, true, null); + } + + private void PerformMrzDismissFunc(SBSDKUI2MRZScannerViewController controller, SBSDKUI2MRZScannerDismissHandler dismissVc) + { + // Dismiss on your own + controller.DismissViewController(true, completionHandler: () => + { + // Inform the SDK, so it initiates the result/error callback. + dismissVc?.Invoke(); }); } - + private void ExtractDocumentData() { var configuration = new SBSDKUI2DocumentDataExtractorScreenConfiguration(); configuration.TopBar.CancelButton.Text = "Done"; - SBSDKUI2DocumentDataExtractorViewController.PresentOn(this, configuration, (controller, result, error) => + var vc = SBSDKUI2DocumentDataExtractorViewController.CreateWith( configuration, (controller, result, error) => { if (error != null) { Alert.ValidateAndShowError(error); return; } - + // Display the results. ShowPopup(this, result.Document?.ToFormattedString()); + }, PerformDdeDismissFunc); // performDismiss + + PresentViewController(vc, true, null); + } + + private void PerformDdeDismissFunc(SBSDKUI2DocumentDataExtractorViewController controller, SBSDKUI2DocumentDataExtractorDismissHandler dismissVc) + { + + // Dismiss on your own + controller.DismissViewController(true, completionHandler: () => + { + // Inform the SDK, so it initiates the result/error callback. + dismissVc?.Invoke(); }); } @@ -44,16 +69,29 @@ private void ScanCheck() { var configuration = new SBSDKUI2CheckScannerScreenConfiguration(); configuration.TopBar.CancelButton.Text = "Done"; - SBSDKUI2CheckScannerViewController.PresentOn(this, configuration, (controller, result, error) => + var vc = SBSDKUI2CheckScannerViewController.CreateWith(configuration, (controller, result, error) => { if (error != null) { Alert.ValidateAndShowError(error); return; } - + // Display the results. ShowPopup(this, result.Check?.ToFormattedString()); + }, PerformCheckDismissFunc); // performDismiss + + PresentViewController(vc, true, null); + } + + private void PerformCheckDismissFunc(SBSDKUI2CheckScannerViewController controller, SBSDKUI2CheckScannerDismissHandler dismissVc) + { + + // Dismiss on your own + controller.DismissViewController(true, completionHandler: () => + { + // Inform the SDK, so it initiates the result/error callback. + dismissVc?.Invoke(); }); } @@ -61,20 +99,34 @@ private void ScanTextPattern() { var configuration = new SBSDKUI2TextPatternScannerScreenConfiguration(); configuration.TopBar.CancelButton.Text = "Done"; - SBSDKUI2TextPatternScannerViewController.PresentOn(this, configuration, (controller, result, error) => + configuration.ScannerConfiguration.Validator = new SBSDKCustomContentValidator("", new MyCallback()); + + var vc = SBSDKUI2TextPatternScannerViewController.CreateWith(configuration, (controller, result, error) => + { + if (error != null) + { + Alert.ValidateAndShowError(error); + return; + } + + if (string.IsNullOrWhiteSpace(result.RawText)) + { + Alert.Show("Alert", "Something went wrong while scanning the text."); + return; + } + Alert.Show("Result", result.RawText); + }, PerformDismissFunc); // performDismiss + + PresentViewController(vc, true, null); + } + + private void PerformDismissFunc(SBSDKUI2TextPatternScannerViewController controller, SBSDKUI2TextPatternScannerDismissHandler dismissVc) + { + // Dismiss on your own + controller.DismissViewController(true, completionHandler: () => { - if (error != null) - { - Alert.ValidateAndShowError(error); - return; - } - - if (string.IsNullOrWhiteSpace(result.RawText)) - { - Alert.Show("Alert", "Something went wrong while scanning the text."); - return; - } - Alert.Show("Result", result.RawText); + // Inform the SDK, so it initiates the result/error callback. + dismissVc?.Invoke(); }); } @@ -82,7 +134,7 @@ private void ScanVin() { var configuration = new SBSDKUI2VINScannerScreenConfiguration(); configuration.TopBar.CancelButton.Text = "Done"; - SBSDKUI2VINScannerViewController.PresentOn(this, configuration, (controller, result, error) => + var vc = SBSDKUI2VINScannerViewController.CreateWith(configuration, (controller, result, error) => { if (error != null) { @@ -97,6 +149,18 @@ private void ScanVin() } Alert.Show("Result", result.TextResult.RawText); + }, PerformVinDismissFunc); // performDismiss + + PresentViewController(vc, true, null); + } + + private void PerformVinDismissFunc(SBSDKUI2VINScannerViewController controller, SBSDKUI2VINScannerDismissHandler dismissVc) + { + // Dismiss on your own + controller.DismissViewController(true, completionHandler: () => + { + // Inform the SDK, so it initiates the result/error callback. + dismissVc?.Invoke(); }); } @@ -105,18 +169,37 @@ private void ScanCreditCard() var configuration = new SBSDKUI2CreditCardScannerScreenConfiguration(); configuration.TopBar.CancelButton.Text = "Done"; - SBSDKUI2CreditCardScannerViewController.PresentOn(this, configuration, (controller, result, error) => + var vc = SBSDKUI2CreditCardScannerViewController.CreateWith(configuration, (controller, result, error) => { if (error != null) { Alert.ValidateAndShowError(error); return; } - + if (result?.CreditCard == null) return; ShowPopup(this, result.CreditCard?.ToFormattedString()); + }, PerformCreditCardDismissFunc); // performDismiss + + PresentViewController(vc, true, null); + } + + private void PerformCreditCardDismissFunc(SBSDKUI2CreditCardScannerViewController controller, SBSDKUI2CreditCardScannerDismissHandler dismissVc) + { + // Dismiss on your own + controller.DismissViewController(true, completionHandler: () => + { + // Inform the SDK, so it initiates the result/error callback. + dismissVc?.Invoke(); }); } + + // (1) Subclassing the wrapper crashes at construction: + public sealed class MyCallback : SBSDKContentValidationCallback + { + public override bool ValidateWithText(string text) => /* … */ true; + public override string CleanWithRawText(string rawText) => rawText; + } } \ No newline at end of file diff --git a/NET/ScanbotSdkExample.iOS/ScanbotSdkExample.iOS.csproj b/NET/ScanbotSdkExample.iOS/ScanbotSdkExample.iOS.csproj index 8ab09be..2692a74 100644 --- a/NET/ScanbotSdkExample.iOS/ScanbotSdkExample.iOS.csproj +++ b/NET/ScanbotSdkExample.iOS/ScanbotSdkExample.iOS.csproj @@ -79,6 +79,6 @@ - +