Share via

MAUI issue - iOS CarouselView does not update content correctly when Accessibility (Voice Over) is enabled

Raghavender Yelisetty (ext) 0 Reputation points
2026-04-01T10:45:05.1533333+00:00

When using CarouselView together with IndicatorView in .NET MAUI, enabling Accessibility/Screen Reader (such as VoiceOver on iOS) causes the CarouselView content to not update when navigating items.

However, the IndicatorView does update correctly, showing the position change.

This issue does not occur when accessibility is disabled—in that case, both the content and the indicator stay in sync.

This results in mismatched UI:

 

Actual Behavior

The indicator view shows a different position

The carousel content remains stuck on the previous item

 

Expected Behavior

CarouselView content should update to match the position shown by the IndicatorView.

Both controls should remain synchronized even when accessibility is enabled.

  

Steps to Repro

  1. Run the dotnet maui sample on iOS.
  2. Swipe until the focus on accessibility is on the right arrow button. Double tap it, then move the focus to the left arrow button and double tap it again. You should see that the indicator view works, but the content of the carousel doesn't change.
Developer technologies | .NET | .NET MAUI

1 answer

Sort by: Most helpful
  1. Nancy Vo (WICLOUD CORPORATION) 1,985 Reputation points Microsoft External Staff Moderator
    2026-04-02T03:05:20.7466667+00:00

    Hi @Raghavender Yelisetty (ext) ,

    Thanks for your question.

    There is a known issue with Indicator does not update when swiping through CarouselView with Voiceover on iOS. This is slightly different from your case, where the indicator does update, but to an incorrect position.

    While this is a non-Microsoft link, it’s official github link and is safe to visit.

    This issue has been resolved with the new CarouselView implementation. Please check that you are using the latest version of .NET MAUI and try again.

    Note: in case you are using the old version, it may not work.

    If you are already on the latest version, I recommend testing on a physical device. Also, instead of navigating through slides using a single‑finger swipe, VoiceOver now requires a three‑finger swipe.

    In case it does not work, you can try the following workarounds:

    1. Try forcing the new handler in MauiProgram.cs:
    #if IOS || MACCATALYST
    builder.ConfigureMauiHandlers(handlers =>
    {
        handlers.AddHandler<CarouselView, Microsoft.Maui.Controls.Handlers.Items2.CarouselViewHandler2>();
    });
    #endif
    
    1. Use this manual sync workaround as a quick fix.
    <CarouselView x:Name="carousel" 
                  ItemsSource="{Binding Items}"
                  CurrentItem="{Binding SelectedItem, Mode=TwoWay}"
                  Position="{Binding CurrentPosition, Mode=TwoWay}" />
    

    In code-behind:

    carousel.CurrentItemChanged += (s, e) =>
    {
        carousel.Position = carousel.Position;   
    };
    

    I hope this addresses your question. If this response was helpful, please consider following the guidance to provide feedback.


Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.