From f83cf65c40172e59b8682b3194307c57e2364505 Mon Sep 17 00:00:00 2001 From: tj-devel709 Date: Fri, 11 Apr 2025 16:36:49 -0500 Subject: [PATCH 01/16] work for iOS and Android --- .../Items/Android/SelectableViewHolder.cs | 1 + .../Items/iOS/SelectableItemsViewController.cs | 4 ++++ .../iOS/Extensions/AcessibilityExtensions.cs | 17 +++++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/src/Controls/src/Core/Handlers/Items/Android/SelectableViewHolder.cs b/src/Controls/src/Core/Handlers/Items/Android/SelectableViewHolder.cs index 97011d1a7a52..88b1a451cdee 100644 --- a/src/Controls/src/Core/Handlers/Items/Android/SelectableViewHolder.cs +++ b/src/Controls/src/Core/Handlers/Items/Android/SelectableViewHolder.cs @@ -34,6 +34,7 @@ public bool IsSelected SetSelectionStates(_isSelected); ItemView.Activated = _isSelected; + ItemView.Selected = _isSelected; OnSelectedChanged(); } } diff --git a/src/Controls/src/Core/Handlers/Items/iOS/SelectableItemsViewController.cs b/src/Controls/src/Core/Handlers/Items/iOS/SelectableItemsViewController.cs index 5b3ed42585fc..17efb5b4cd48 100644 --- a/src/Controls/src/Core/Handlers/Items/iOS/SelectableItemsViewController.cs +++ b/src/Controls/src/Core/Handlers/Items/iOS/SelectableItemsViewController.cs @@ -75,6 +75,8 @@ void FormsSelectItem(NSIndexPath indexPath) ItemsView.SelectedItems.Add(GetItemAtIndex(indexPath)); break; } + + CollectionView.CellForItem(indexPath)?.UpdateSelected(true); } void FormsDeselectItem(NSIndexPath indexPath) @@ -91,6 +93,8 @@ void FormsDeselectItem(NSIndexPath indexPath) ItemsView.SelectedItems.Remove(GetItemAtIndex(indexPath)); break; } + + CollectionView.CellForItem(indexPath)?.UpdateSelected(false); } internal void UpdatePlatformSelection() diff --git a/src/Controls/src/Core/Platform/iOS/Extensions/AcessibilityExtensions.cs b/src/Controls/src/Core/Platform/iOS/Extensions/AcessibilityExtensions.cs index 304bdca3ecce..7dc953d23e8b 100644 --- a/src/Controls/src/Core/Platform/iOS/Extensions/AcessibilityExtensions.cs +++ b/src/Controls/src/Core/Platform/iOS/Extensions/AcessibilityExtensions.cs @@ -4,6 +4,23 @@ namespace Microsoft.Maui.Controls.Platform; internal static class AcessibilityExtensions { + internal static void UpdateSelected(this UICollectionViewCell cell, bool selected) + { + if (cell.ContentView is not null && cell.ContentView.Subviews.Length > 0) + { + var firstChild = cell.ContentView.Subviews[0]; + + if (selected) + { + firstChild.AccessibilityTraits |= UIAccessibilityTrait.Selected; + } + else + { + firstChild.AccessibilityTraits &= ~UIAccessibilityTrait.Selected; + } + } + } + internal static void UpdateAccessibilityTraits(this UICollectionView collectionView, SelectableItemsView itemsView) { foreach (var subview in collectionView.Subviews) From 5c8bc5559e315a7b8398e0a2a1bd4b064137f999 Mon Sep 17 00:00:00 2001 From: tj-devel709 Date: Fri, 11 Apr 2025 16:37:51 -0500 Subject: [PATCH 02/16] sample code to remove later --- .../Controls.Sample.Sandbox/MainPage.xaml | 17 +++++++++ .../Controls.Sample.Sandbox/MainPage.xaml.cs | 37 ++++++++++++++++++- 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/src/Controls/samples/Controls.Sample.Sandbox/MainPage.xaml b/src/Controls/samples/Controls.Sample.Sandbox/MainPage.xaml index 7363d18deadd..538eaa3d9a32 100644 --- a/src/Controls/samples/Controls.Sample.Sandbox/MainPage.xaml +++ b/src/Controls/samples/Controls.Sample.Sandbox/MainPage.xaml @@ -2,4 +2,21 @@ xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="Maui.Controls.Sample.MainPage" xmlns:local="clr-namespace:Maui.Controls.Sample"> + + + + + + + + + + +