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

2 answers

Sort by: Most helpful
  1. Raghavender Yelisetty (ext) 0 Reputation points
    2026-04-17T10:49:56.4533333+00:00

    Hi @Nancy Vo (WICLOUD CORPORATION)

    Thank you for your response. We would like to clarify that the behavior we are experiencing differs from the previously documented case. The known issue relates to the indicator not updating when swiping through Carousel View with VoiceOver enabled on iOS.

    In our scenario, however, the indicator updates correctly, but the carousel content itself becomes stuck and does not refresh. This behavior is also reproducible in .NET 10 with the CarouselView2 handler. We have already applied the suggested workaround, but unfortunately it did not resolve the problem and introduced additional issues.

     

    For reference, we have shared a reproduced sample and output recording.

    https://github.com/AnandhanRajagopal/maui-carouselview-accessibility-issue

    0 comments No comments

  2. Nancy Vo (WICLOUD CORPORATION) 2,730 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.