diff --git a/src/Controls/tests/TestCases.HostApp/Issues/Issue29558.xaml b/src/Controls/tests/TestCases.HostApp/Issues/Issue29558.xaml
new file mode 100644
index 000000000000..e27513fe4251
--- /dev/null
+++ b/src/Controls/tests/TestCases.HostApp/Issues/Issue29558.xaml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Controls/tests/TestCases.HostApp/Issues/Issue29558.xaml.cs b/src/Controls/tests/TestCases.HostApp/Issues/Issue29558.xaml.cs
new file mode 100644
index 000000000000..d3fcfbf74028
--- /dev/null
+++ b/src/Controls/tests/TestCases.HostApp/Issues/Issue29558.xaml.cs
@@ -0,0 +1,33 @@
+namespace Maui.Controls.Sample.Issues;
+
+[Issue(IssueTracker.Github, 29558, "Input controls should not change keyboard visibility", PlatformAffected.Android)]
+public partial class Issue29558 : Shell
+{
+ int _action = 0;
+
+ public Issue29558()
+ {
+ InitializeComponent();
+ }
+
+ private void UnfocusButton_Clicked(object sender, EventArgs e)
+ {
+ switch (_action)
+ {
+ case 0:
+ searchHandler.Unfocus();
+ break;
+ case 1:
+ entry.Unfocus();
+ break;
+ case 2:
+ editor.Unfocus();
+ break;
+ default:
+ _action = 0;
+ break;
+ }
+
+ _action = (_action + 1) % 3;
+ }
+}
\ No newline at end of file
diff --git a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue29558.cs b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue29558.cs
new file mode 100644
index 000000000000..a08c4f8f381c
--- /dev/null
+++ b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue29558.cs
@@ -0,0 +1,37 @@
+#if ANDROID ///This test only runs on Android because UnFocus behavior differs across platforms: on Android the input view should remain visible after UnFocus, whereas on iOS it automatically hides.
+
+using NUnit.Framework;
+using UITest.Appium;
+using UITest.Core;
+
+namespace Microsoft.Maui.TestCases.Tests.Issues;
+
+public class Issue29558 : _IssuesUITest
+{
+ public Issue29558(TestDevice testDevice) : base(testDevice) { }
+
+ public override string Issue => "Input controls should not change keyboard visibility";
+
+ [Test]
+ [Category(UITestCategories.SoftInput)]
+ public void Issue29558InputViewShouldNotHideOnUnfocusCall()
+ {
+ bool isKeyboardVisible;
+ App.WaitForElement("unfocusButton");
+
+ List inputControls = ["entry", "editor", "searchBar", "searchHandler"];
+ foreach (var control in inputControls)
+ {
+ App.Click(control);
+ isKeyboardVisible = App.IsKeyboardShown();
+ Assert.That(isKeyboardVisible, Is.True);
+ App.Click("unfocusButton");
+ isKeyboardVisible = App.IsKeyboardShown();
+ Assert.That(isKeyboardVisible, Is.True);
+ App.DismissKeyboard();
+ isKeyboardVisible = App.IsKeyboardShown();
+ Assert.That(isKeyboardVisible, Is.False);
+ }
+ }
+}
+#endif
\ No newline at end of file