Skip to content

Comments

Fix VoiceOver doesnot announces the State of the ComboBox #32286

Merged
PureWeen merged 2 commits intodotnet:inflight/currentfrom
SuthiYuvaraj:fix-sample
Jan 16, 2026
Merged

Fix VoiceOver doesnot announces the State of the ComboBox #32286
PureWeen merged 2 commits intodotnet:inflight/currentfrom
SuthiYuvaraj:fix-sample

Conversation

@SuthiYuvaraj
Copy link
Contributor

Issue Description:

VoiceOver does not read the ComboBox State correctly, In the sample, the ComboBox behavior is implemented using SfTextInputLayout with a Picker. However, I have already implemented the semantic properties for picker , it was overriden by SfTextInputLayout, the expectation is for VoiceOver to recognise and announce it as a ComboBox state.

Description of change :

Update SemanticProperties using property changed on IsOpen property in picker to achieve the expected output.

Note:
net9.0 PR - dotnet/maui-samples#651

Issues Fixed

Fixes #30899

Tested the behaviour in the following platforms

  • Android
  • Windows
  • iOS
  • Mac

@dotnet-policy-service dotnet-policy-service bot added the partner/syncfusion Issues / PR's with Syncfusion collaboration label Oct 30, 2025
{
if (value)
{
SemanticScreenReader.Announce("State Expanded");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The current announcements "State Expanded" and "State Collapsed" lack context about what was expanded/collapsed.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @jsuarezruiz,I’ve updated the SemanticScreenReader with the responsible category. Please review the changes and let me know if you have any feedback or concerns.

@jsuarezruiz jsuarezruiz added the t/a11y Relates to accessibility label Oct 30, 2025
@sheiksyedm sheiksyedm added area-templates Project templates, Item Templates for Blazor and MAUI a11y/sf-template-app labels Oct 30, 2025
@SuthiYuvaraj SuthiYuvaraj marked this pull request as ready for review October 30, 2025 10:12
Copilot AI review requested due to automatic review settings October 30, 2025 10:12
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR improves accessibility for Picker controls in the MAUI mobile template by implementing dynamic screen reader announcements for picker state changes. Instead of using static semantic properties, the changes track picker expansion state through bound properties and announce state changes programmatically.

Key changes:

  • Replaced static SemanticProperties attributes with programmatic SemanticScreenReader.Announce calls
  • Added IsOpen bindings to Picker controls to track their expanded/collapsed state
  • Implemented property change handlers to announce picker state changes to screen readers

Reviewed Changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

File Description
TaskDetailPage.xaml Updated Project picker with consolidated semantic description and IsOpen binding; removed redundant semantic properties
ProjectDetailPage.xaml Updated Category picker with consolidated semantic description and IsOpen binding; removed redundant semantic properties
TaskDetailPageModel.cs Added IsProjectPickerExpanded property and OnIsProjectPickerExpandedChanged handler to announce picker state changes
ProjectDetailPageModel.cs Added IsCategoryPickerExpanded property and OnIsCategoryPickerExpandedChanged handler to announce picker state changes

OnPropertyChanged(nameof(HasCompletedTasks));
}

partial void OnIsCategoryPickerExpandedChanged(bool value)
Copy link

Copilot AI Oct 30, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Extra space between 'void' and 'OnIsCategoryPickerExpandedChanged'. Should be single space for consistency with the similar method in TaskDetailPageModel.cs.

Copilot uses AI. Check for mistakes.
@jsuarezruiz
Copy link
Contributor

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@PureWeen PureWeen changed the base branch from main to inflight/current January 16, 2026 17:51
@PureWeen PureWeen merged commit 69d832c into dotnet:inflight/current Jan 16, 2026
20 of 23 checks passed
github-actions bot pushed a commit that referenced this pull request Jan 20, 2026
### Issue Description:

VoiceOver does not read the ComboBox State correctly, In the sample, the
ComboBox behavior is implemented using SfTextInputLayout with a Picker.
However, I have already implemented the semantic properties for picker ,
it was overriden by SfTextInputLayout, the expectation is for VoiceOver
to recognise and announce it as a ComboBox state.

### Description of change :
Update SemanticProperties using property changed on IsOpen property in
picker to achieve the expected output.

> Note:
net9.0 PR - dotnet/maui-samples#651

### Issues Fixed
Fixes [#30899 ](#30899)

### Tested the behaviour in the following platforms
- [ ] Android
- [ ] Windows
- [ ] iOS
- [x] Mac
github-actions bot pushed a commit that referenced this pull request Jan 21, 2026
### Issue Description:

VoiceOver does not read the ComboBox State correctly, In the sample, the
ComboBox behavior is implemented using SfTextInputLayout with a Picker.
However, I have already implemented the semantic properties for picker ,
it was overriden by SfTextInputLayout, the expectation is for VoiceOver
to recognise and announce it as a ComboBox state.

### Description of change :
Update SemanticProperties using property changed on IsOpen property in
picker to achieve the expected output.

> Note:
net9.0 PR - dotnet/maui-samples#651

### Issues Fixed
Fixes [#30899 ](#30899)

### Tested the behaviour in the following platforms
- [ ] Android
- [ ] Windows
- [ ] iOS
- [x] Mac
github-actions bot pushed a commit that referenced this pull request Jan 23, 2026
### Issue Description:

VoiceOver does not read the ComboBox State correctly, In the sample, the
ComboBox behavior is implemented using SfTextInputLayout with a Picker.
However, I have already implemented the semantic properties for picker ,
it was overriden by SfTextInputLayout, the expectation is for VoiceOver
to recognise and announce it as a ComboBox state.

### Description of change :
Update SemanticProperties using property changed on IsOpen property in
picker to achieve the expected output.

> Note:
net9.0 PR - dotnet/maui-samples#651

### Issues Fixed
Fixes [#30899 ](#30899)

### Tested the behaviour in the following platforms
- [ ] Android
- [ ] Windows
- [ ] iOS
- [x] Mac
PureWeen pushed a commit that referenced this pull request Jan 23, 2026
### Issue Description:

VoiceOver does not read the ComboBox State correctly, In the sample, the
ComboBox behavior is implemented using SfTextInputLayout with a Picker.
However, I have already implemented the semantic properties for picker ,
it was overriden by SfTextInputLayout, the expectation is for VoiceOver
to recognise and announce it as a ComboBox state.

### Description of change :
Update SemanticProperties using property changed on IsOpen property in
picker to achieve the expected output.

> Note:
net9.0 PR - dotnet/maui-samples#651

### Issues Fixed
Fixes [#30899 ](#30899)

### Tested the behaviour in the following platforms
- [ ] Android
- [ ] Windows
- [ ] iOS
- [x] Mac
PureWeen added a commit that referenced this pull request Jan 25, 2026
## What's Coming

.NET MAUI inflight/candidate introduces significant improvements across
all platforms with focus on quality, performance, and developer
experience. This release includes 16 commits with various improvements,
bug fixes, and enhancements.


## Checkbox
- [Android] Implement material3 support for CheckBox by
@HarishwaranVijayakumar in #33339
  <details>
  <summary>🔧 Fixes</summary>

- [Implement Material3 Support for
CheckBox](#33338)
  </details>

## CollectionView
- [Android] Fixed EmptyView doesn’t display when CollectionView is
placed inside a VerticalStackLayout by @NanthiniMahalingam in
#33134
  <details>
  <summary>🔧 Fixes</summary>

- [CollectionView does not show an EmptyView template with an empty
collection](#32932)
  </details>

## Essentials
- [Windows]Fix NullReferenceException in OpenReadAsync for FileResult
created with full path by @devanathan-vaithiyanathan in
#28238
  <details>
  <summary>🔧 Fixes</summary>

- [[Windows] FileResult(string fullPath) not initialized
properly](#26858)
  </details>

## Image
- Fix Glide IllegalArgumentException in MauiCustomTarget.clear() for
destroyed activities by @jfversluis via @Copilot in
#29780
  <details>
  <summary>🔧 Fixes</summary>

- [java.lang.IllegalArgumentException: You cannot start a load for a
destroyed activity - glide](#29699)
  </details>

## Label
- [Android] Fix for Label WordWrap width issue causing HorizontalOptions
misalignment by @praveenkumarkarunanithi in
#33281
  <details>
  <summary>🔧 Fixes</summary>

- [[Android] Unexpected Line Breaks in Android, Label with WordWrap Mode
Due to Trailing Space.](#31782)
- [Label not sized correctly on
Android](#27614)
  </details>

- Fix to Improve Flyout Accessibility by Adjusting UITableViewController
Labels by @SuthiYuvaraj in #31619
  <details>
  <summary>🔧 Fixes</summary>

- [Navigation section present under hamburger are programmatically
define as table :A11y_.NET maui_User can get all the insights of
Dashboard_Devtools](#30894)
  </details>

## Mediapicker
- [Regression][iOS] Fix MediaPicker PickPhotosAsync getting file name in
contentType property by @devanathan-vaithiyanathan in
#33390
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS] MediaPicker PickPhotosAsync getting file name in contentType
property](#33348)
  </details>

## Navigation
- Fix handler not disconnected when removing non visible pages using
RemovePage() by @Vignesh-SF3580 in
#32289
  <details>
  <summary>🔧 Fixes</summary>

- [NavigationPage.Navigation.RemovePage() fails to disconnect handlers
when removing pages, unlike
ContentPage.Navigation.RemovePage()](#32239)
  </details>

## Picker
- [Android] Fix Picker IsOpen not reset when picker is dismissed by
@devanathan-vaithiyanathan in #33332
  <details>
  <summary>🔧 Fixes</summary>

- [[Android] Picker IsOpen not reset when picker is
dismissed](#33331)
  </details>

## Shell
- [iOS & Catalyst ] Fixed IsEnabled property should work on Tabs by
@SubhikshaSf4851 in #33369
  <details>
  <summary>🔧 Fixes</summary>

- [[Catalyst] TabBarBackgroundColor, TabBarUnselectedColor, and
IsEnabled Not Working as Expected in
Shell](#33158)
  </details>

- [iOS,Windows] Fix navigation bar colors not resetting when switching
ShellContent by @Vignesh-SF3580 in
#33228
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS, Windows] Shell Navigation bar colors are not updated correctly
when switching
ShellContent](#33227)
  </details>

- [iOS] Fixed Shell navigation on search handler suggestion selection by
@SubhikshaSf4851 in #33406
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS] Clicking on search suggestions fails to navigate to detail page
correctly](#33356)
  </details>

## Templates
- Fix VoiceOver doesnot announces the State of the ComboBox by
@SuthiYuvaraj in #32286

## Xaml
- [XSG][BindingSourceGen] Add support for CommunityToolkit.Mvvm
ObservablePropertyAttribute by @simonrozsival via @Copilot in
#33028
  <details>
  <summary>🔧 Fixes</summary>

- [[XSG] Add heuristic to support bindable properties generated by other
source generators](#32597)
  </details>


<details>
<summary>📦 Other (2)</summary>

- [XSG] Improve diagnostic reporting during binding compilation by
@simonrozsival via @Copilot in #32905
- [Testing] Fixed Test case failure in PR 33574 - [01/19/2026] Candidate
- 1 by @TamilarasanSF4853 in #33602

</details>
**Full Changelog**:
main...inflight/candidate
@github-actions github-actions bot locked and limited conversation to collaborators Feb 16, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

a11y/sf-template-app area-templates Project templates, Item Templates for Blazor and MAUI community ✨ Community Contribution partner/syncfusion Issues / PR's with Syncfusion collaboration t/a11y Relates to accessibility

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Voice over is not announcing role as combo box and state as collapsed for "Project" combobox:A11y_.NET maui_user can creat a tak_Screen reader

6 participants