SwiftUI tvOS Accessibility VoiceOver - prevent reading all items in ScrollView over and over

Hi, I'm trying to fix tvOS view for VoiceOver accessibility feature:

TabView { // 5 tabs
Text(title)
Button(play)
ScrollView { // Live
LazyHStack { 200 items }
}
ScrollView { // Continue watching
LazyHStack { 500 items }
}
}

When the view shows up VoiceOver reads: "Home tab 1 of 5, Item 2" - not sure why it reads Item 2 of the first cell in scroll view, maybe beacause it just got loaded by LazyHStack. VocieOver should only read "Home tab 1 of 5"

When moving focus to scroll view it reads: "Live, Item 1" and after slight delay "Item 1, Item 2, Item 3, Item 4"

When moving focus to second item it reads: "Item 2" and after slight delay "Item 1, Item 2, Item 3, Item 4"

When moving focus to third item it reads: "Item 3" and after slight delay "Item 1, Item 2, Item 3, Item 4"

It should be just reading what is focused, idealy just

"Live, Item 1, 1 of 200"

then after moving focus on item 2

"Item 2, 2 of 200"

this time without the word "Live" because we are on the same scroll view (the same horizontal list)

Currently the app is unusable, we have visually impaired testers and this rotor reading everything on the screen is totaly confusing, because users don't know where they are and what is actually focused. This is a video streaming app and we are streaming all the time, even on home page in background, binge plays one item after another, usually there is never ending Live stream playing, user can switch TV channel, but we continue to play. Voice over should only read what's focused after user interaction.

Original Apple TV app does not do that, so it cannot be caused by some verbose accessibility settings. It reads correctly only focused item in scrolling lists.

How do I disable reading content that is not focused? I tried:

.accessibilityLabel(isFocused ? title : "")
.accessibilityHidden(!isFocused)
.accessibilityHidden(true) - tried on various levels in view hierarchy
.accessiblityElement(children: .ignore) - even focused item is not read back by voice over
.accessiblityElement(children: .ignore) - even focused item is not read back by voice over
.accessiblityElement(children: .contain) - tried on various levels in view hierarchy
.accessiblityElement(children: .combine) - tried on various levels in view hierarchy
.accessibilityAddTraits(.isHeader) - tried on various levels in view hierarchy
.accessibilityRemoveTraits(.isHeader) - tried on various levels in view hierarchy
// the last 2 was basically an attempt to hack it
.accessibilityRotor("", ranges []) - another hack that I tried on ScrollView, LazyHStack, also on top level view.
50+ other attempts at configuring accessibility tags attached to views.

I have seen all the accessibility videos, tried all sample code projects, I haven't found a solution anywhere, internet search didn't find anything, AI didn't help as it can only provide code that someone else wrote before.

Any idea how to fix this? Thanks.

When turning off "read screen after delay" it works correctly and VoiceOver reads only focused item in ScrollView and not the other items. However I would still like to achieve similar behavior as "Apple TV+" app, because it only appears to use the feature "Read after delay" in forms or detail of the show, but not in scrolling lists when "Read after delay" is ON.

Is it possible that Apple uses different approach than .accessibility properties, perhaps undocumented APIs or do they turn "Read after delay" somehow off while focus is in ScrollView?

For now I guess we can live with current behavior, but it would be nice to replicate how Apple's app works.

SwiftUI tvOS Accessibility VoiceOver - prevent reading all items in ScrollView over and over
 
 
Q