Skip to content

a11y scrolling on iOS doesn't work #11983

Closed

Description

@goderbauer
  • When swiping through all elements of a scrollable, the list should scroll slightly when the last/first partially visible element is reached
  • It should not scroll when the user taps directly on the last/first partially visible element
  • When the user swipes past the last/first visible element, the list should scroll roughly a page.

Activity

  1. added
    a: accessibilityAccessibility, e.g. VoiceOver or TalkBack. (aka a11y)
    f: scrollingViewports, list views, slivers, etc.
    platform-iosiOS applications specifically
    on Sep 7, 2017
  2. goderbauer commented on Feb 14, 2018

    @goderbauer
    MemberAuthor

    Current idea for this: Send additional semantics nodes, that are currently outside of the viewport at the top and bottom of the scrollable, over to the engine. Mark these nodes with a new SemanticsFlag hidden. In iOS, we position their a11y frame outside of the visible screen, so they can only be focused by using left/right swipes to jump from one element to the next. If a hidden element gains focus, we will fire a showOnScreen action, which brings that element on screen. This requires improvements to showOnScreen as well (e.g. only scroll if the element is actually not visible on screen, etc. #11665)

    Remaining problem with this approach: When you move the a11y focus from outside the list into the list via left/right swipes, we will focus on the first hidden element of the list and bring that into view instead of moving the focus to the first visible element.

    Challenges:
    We need to work this into the traversal order system. On Android, we do not want the hidden semantics nodes to be part of the traversal order. On iOS, they need to be part of it. In particular, focus needs to move from the last visible element of the scrollable to the first hidden one for this to work.
    This will most likely mean we need to fix the default geometric order as well to take app structure into account (#14681). The hidden elements and the visible ones need to form one continuous traversal order, by default. (cc @gspencergoog)

  3. modified the milestones: 3: Current Milestone, on Apr 17, 2018
  4. modified the milestones: , bucket4 on May 1, 2018
  5. cmoralesweb commented on Jun 4, 2020

    @cmoralesweb

    When swiping through all elements of a scrollable, the list should scroll slightly when the last/first partially visible element is reached

    I am testing a ListView on an iPhone 7, iOS 13.3 and I can't get this behavior. The list doesn't scroll when I try to focus the next element. It works just fine on Android.

  6. github-actions commented on Aug 20, 2021

    @github-actions

    This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of flutter doctor -v and a minimal reproduction of the issue.

  7. locked as resolved and limited conversation to collaborators on Aug 20, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions