diff --git a/src/Core/src/Platform/iOS/MauiScrollView.cs b/src/Core/src/Platform/iOS/MauiScrollView.cs index 410871c7bae9..abe86ea015ba 100644 --- a/src/Core/src/Platform/iOS/MauiScrollView.cs +++ b/src/Core/src/Platform/iOS/MauiScrollView.cs @@ -58,6 +58,20 @@ public override void LayoutSubviews() // arrangement with an adjusted starting point and recalculating the content offset. if (_previousEffectiveUserInterfaceLayoutDirection != EffectiveUserInterfaceLayoutDirection) { + // In mac platform, Scrollbar is not updated based on FlowDirection, so resetting the scroll indicators + // It's a native limitation; to maintain platform consistency, a hack fix is applied to show the Scrollbar based on the FlowDirection. + if (OperatingSystem.IsMacCatalyst() && _previousEffectiveUserInterfaceLayoutDirection is not null) + { + bool showsVertical = ShowsVerticalScrollIndicator; + bool showsHorizontal = ShowsHorizontalScrollIndicator; + + ShowsVerticalScrollIndicator = false; + ShowsHorizontalScrollIndicator = false; + + ShowsVerticalScrollIndicator = showsVertical; + ShowsHorizontalScrollIndicator = showsHorizontal; + } + if (EffectiveUserInterfaceLayoutDirection == UIUserInterfaceLayoutDirection.RightToLeft) { var horizontalOffset = contentSize.Width - crossPlatformBounds.Width;