diff --git a/src/Core/src/Hosting/LifecycleEvents/AppHostBuilderExtensions.iOS.cs b/src/Core/src/Hosting/LifecycleEvents/AppHostBuilderExtensions.iOS.cs
index 2837e13b0a44..a7044fcb97a5 100644
--- a/src/Core/src/Hosting/LifecycleEvents/AppHostBuilderExtensions.iOS.cs
+++ b/src/Core/src/Hosting/LifecycleEvents/AppHostBuilderExtensions.iOS.cs
@@ -19,7 +19,8 @@ static void OnConfigureLifeCycle(IiOSLifecycleBuilder iOS)
.OnPlatformWindowCreated((window) =>
{
window.GetWindow()?.Created();
- KeyboardAutoManagerScroll.Connect();
+ if (!KeyboardAutoManagerScroll.ShouldDisconnectLifecycle)
+ KeyboardAutoManagerScroll.Connect();
})
.WillTerminate(app =>
{
diff --git a/src/Core/src/Platform/iOS/KeyboardAutoManagerScroll.cs b/src/Core/src/Platform/iOS/KeyboardAutoManagerScroll.cs
index 69d484258830..66c26edd9ddb 100644
--- a/src/Core/src/Platform/iOS/KeyboardAutoManagerScroll.cs
+++ b/src/Core/src/Platform/iOS/KeyboardAutoManagerScroll.cs
@@ -32,13 +32,22 @@ public static class KeyboardAutoManagerScroll
static CGRect? CursorRect = null;
internal static bool IsKeyboardShowing = false;
static int TextViewTopDistance = 20;
- static int DebounceCount = 0;
- static NSObject? WillShowToken = null;
- static NSObject? WillHideToken = null;
- static NSObject? DidHideToken = null;
- static NSObject? TextFieldToken = null;
- static NSObject? TextViewToken = null;
-
+ static int DebounceCount;
+ static NSObject? WillShowToken;
+ static NSObject? WillHideToken;
+ static NSObject? DidHideToken;
+ static NSObject? TextFieldToken;
+ static NSObject? TextViewToken;
+ internal static bool ShouldDisconnectLifecycle;
+
+ ///
+ /// Enables automatic scrolling with keyboard interactions on iOS devices.
+ ///
+ ///
+ /// This method is being called by default on iOS and will scroll the page when the keyboard
+ /// comes up. Call the method 'KeyboardAutoManagerScroll.Disconnect()'
+ /// to remove this scrolling behavior.
+ ///
public static void Connect()
{
if (TextFieldToken is not null)
@@ -55,8 +64,18 @@ public static void Connect()
DidHideToken = NSNotificationCenter.DefaultCenter.AddObserver(new NSString("UIKeyboardDidHideNotification"), DidHideKeyboard);
}
+ ///
+ /// Disables automatic scrolling with keyboard interactions on iOS devices.
+ ///
+ ///
+ /// When this method is called, scrolling will not automatically happen when the keyboard comes up.
+ ///
public static void Disconnect()
{
+ // if Disconnect is called prior to Connect, signal to not
+ // Connect during the Created Lifecycle event
+ ShouldDisconnectLifecycle = true;
+
if (WillShowToken is not null)
{
NSNotificationCenter.DefaultCenter.RemoveObserver(WillShowToken);