iOS 26.2 VoiceOver focus issue with SwiftUI Menu Picker

is there some sort of new pattern regarding voice over focus in iOS 26.2?


right now in our code we have this swiftui sheet that displays some filters for a swiftui list. one of the filters Is a Menu picker, and the expectation is that when a button launches a popup, when the popup is dismissed, the focus needs to return to the button on voice over.


Menu {

Picker($selectedItem)

}

.accessibilityFocused($isFocused)

.onChange(of: selectedItem) { _, _ in

                 Task { @MainActor in

                        try? await Task.sleep(for: .seconds(0.8))

                        isFocused = true

                  }

}


this is working fine up until 26.1, where it breaks in 26.2, now after selected item is updated and picker is dismissed, the focus goes to cancel button on the sheet for some reason, and not to the the thing im setting accessibilityFocused.

iPhone 15 Pro, iOS 26

Posted on Mar 5, 2026 12:15 PM

Reply
3 replies

Mar 11, 2026 10:45 AM in response to lozzoc

I notice that the issue seems to be that the toolbar takes over focus control when a picker or popup is dismissed, I remove the menu from a sheet and just own it in a navigation stack with a toolbar.


So it seems that the presence of the toolbar is causing this issue. when I remove the toolbar from this view, the issue is no longer present.

Apr 28, 2026 11:46 AM in response to lozzoc

I've also noticed that the change in focus also interrupts other Voice Over functions such as announcements under the same code above.


I too am using a Menu inside a ToolbarItem and it's doing just as described in the original posting. It focus auto assigns itself to the TopLeftMost item in the view.


UIAccessibility.post(
    notification: .announcement,
    argument: "Filter applied to \(newFilter.rawValue)"
)

iOS 26.2 VoiceOver focus issue with SwiftUI Menu Picker

Welcome to Apple Support Community
A forum where Apple customers help each other with their products. Get started with your Apple Account.