diff --git a/src/Controls/tests/TestCases.HostApp/Issues/Issue23411.xaml b/src/Controls/tests/TestCases.HostApp/Issues/Issue23411.xaml
new file mode 100644
index 000000000000..10b3d31c5e1d
--- /dev/null
+++ b/src/Controls/tests/TestCases.HostApp/Issues/Issue23411.xaml
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Controls/tests/TestCases.HostApp/Issues/Issue23411.xaml.cs b/src/Controls/tests/TestCases.HostApp/Issues/Issue23411.xaml.cs
new file mode 100644
index 000000000000..298269514696
--- /dev/null
+++ b/src/Controls/tests/TestCases.HostApp/Issues/Issue23411.xaml.cs
@@ -0,0 +1,43 @@
+using Microsoft.Maui.Controls;
+using Microsoft.Maui.Controls.PlatformConfiguration;
+using Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific;
+using Application = Microsoft.Maui.Controls.Application;
+using NavigationPage = Microsoft.Maui.Controls.NavigationPage;
+
+namespace Maui.Controls.Sample.Issues
+{
+ [Issue(IssueTracker.Github, 23411, "[iOS]Use non-overridden traits in AppInfoImplementation.RequestTheme",
+ PlatformAffected.iOS)]
+ public partial class Issue23411 : ContentPage
+ {
+ public Issue23411()
+ {
+ InitializeComponent();
+ Application.Current.UserAppTheme = AppTheme.Dark;
+ }
+
+ private void OnModalPage(object sender, EventArgs e)
+ {
+#if IOS
+ var modalPage = new NavigationPage(new Issue23411() { Title = "Modal Page" ,AutomationId = "PageSheetModalPage" });
+ modalPage.On().SetModalPresentationStyle(UIModalPresentationStyle.PageSheet);
+ Navigation.PushModalAsync(modalPage);
+#endif
+ }
+
+ private void OnDarkTheme(object sender, EventArgs e)
+ {
+ Application.Current!.UserAppTheme = AppTheme.Dark;
+ }
+
+ private void OnLightTheme(object sender, EventArgs e)
+ {
+ Application.Current!.UserAppTheme = AppTheme.Light;
+ }
+
+ private void OnResetTheme(object sender, EventArgs e)
+ {
+ Application.Current!.UserAppTheme = AppTheme.Unspecified;
+ }
+ }
+}
diff --git a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue23411.cs b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue23411.cs
new file mode 100644
index 000000000000..0f86609b1896
--- /dev/null
+++ b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue23411.cs
@@ -0,0 +1,33 @@
+#if IOS
+using NUnit.Framework.Legacy;
+using NUnit.Framework;
+using UITest.Appium;
+using UITest.Core;
+
+namespace Microsoft.Maui.TestCases.Tests.Issues
+{
+ internal class Issue23411 : _IssuesUITest
+ {
+ public override string Issue => "[iOS]Use non-overridden traits in AppInfoImplementation.RequestTheme";
+
+ public Issue23411(TestDevice device) : base(device)
+ {
+ }
+
+ [Test]
+ [Category(UITestCategories.Page)]
+ public void ThemeUnspecifiedDoesNotAffectModalPageSheet()
+ {
+ // Is a iOS issue; see https://github.com/dotnet/maui/issues/23411
+ App.WaitForElement("ThemePage");
+ App.WaitForElement("ModalPageButton");
+ App.Tap("ModalPageButton");
+ App.WaitForElement("PageSheetModalPage");
+ App.WaitForElement("ResetThemeButton");
+ App.Tap("ResetThemeButton")
+ VerifyScreenshot();
+
+ }
+ }
+}
+#endif
diff --git a/src/Essentials/src/AppInfo/AppInfo.ios.tvos.watchos.macos.cs b/src/Essentials/src/AppInfo/AppInfo.ios.tvos.watchos.macos.cs
index 3854698f4e96..0c7fa2d5ec7e 100644
--- a/src/Essentials/src/AppInfo/AppInfo.ios.tvos.watchos.macos.cs
+++ b/src/Essentials/src/AppInfo/AppInfo.ios.tvos.watchos.macos.cs
@@ -54,9 +54,9 @@ public AppTheme RequestedTheme
if ((OperatingSystem.IsIOS() && !OperatingSystem.IsIOSVersionAtLeast(13, 0)) || (OperatingSystem.IsTvOS() && !OperatingSystem.IsTvOSVersionAtLeast(13, 0)))
return AppTheme.Unspecified;
- var traits =
- MainThread.InvokeOnMainThread(() => WindowStateManager.Default.GetCurrentUIViewController()?.TraitCollection) ??
- UITraitCollection.CurrentTraitCollection;
+ // This always returns the non-overridden trais which allows restoring the
+ // application back to the system theme.
+ var traits = UIScreen.MainScreen.TraitCollection;
var uiStyle = traits.UserInterfaceStyle;