From 18ab46b1f3eb99e84595d44e865ccf571272bab7 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Tue, 18 Jul 2023 12:49:11 -0500 Subject: [PATCH] updated more accessibilityLabels/Values Signed-off-by: Matt Bruce --- VDS/Classes/SelectorBase.swift | 18 ++++++++++++++ VDS/Classes/SelectorGroupHandlerBase.swift | 24 +++++++++++++++++++ VDS/Classes/SelectorItemBase.swift | 9 ++++++- .../Buttons/Button/ButtonBase.swift | 2 +- VDS/Components/Checkbox/Checkbox.swift | 1 + VDS/Components/Checkbox/CheckboxGroup.swift | 1 + VDS/Components/RadioBox/RadioBoxGroup.swift | 4 ++-- VDS/Components/RadioBox/RadioBoxItem.swift | 13 ++++++++-- .../RadioButton/RadioButtonGroup.swift | 4 ++-- VDS/Components/Toggle/Toggle.swift | 9 ++++++- VDS/Components/Tooltip/Tooltip.swift | 2 +- 11 files changed, 77 insertions(+), 10 deletions(-) diff --git a/VDS/Classes/SelectorBase.swift b/VDS/Classes/SelectorBase.swift index 2d692f48..7ddb9d2f 100644 --- a/VDS/Classes/SelectorBase.swift +++ b/VDS/Classes/SelectorBase.swift @@ -75,6 +75,10 @@ open class SelectorBase: Control, SelectorControlable { open override func setup() { super.setup() + + isAccessibilityElement = true + accessibilityTraits = .button + let layoutGuide = UILayoutGuide() addLayoutGuide(layoutGuide) @@ -107,4 +111,18 @@ open class SelectorBase: Control, SelectorControlable { layoutIfNeeded() } + open override func updateAccessibilityLabel() { + accessibilityValue = isSelected ? "1" : "0" + if !accessibilityTraits.contains(.selected) && isSelected { + accessibilityTraits.insert(.selected) + } else if accessibilityTraits.contains(.selected) && !isSelected{ + accessibilityTraits.remove(.selected) + } + + if !accessibilityTraits.contains(.notEnabled) && !isEnabled { + accessibilityTraits.insert(.notEnabled) + } else if accessibilityTraits.contains(.notEnabled) && !isEnabled { + accessibilityTraits.remove(.notEnabled) + } + } } diff --git a/VDS/Classes/SelectorGroupHandlerBase.swift b/VDS/Classes/SelectorGroupHandlerBase.swift index 09e37abb..76a6fc74 100644 --- a/VDS/Classes/SelectorGroupHandlerBase.swift +++ b/VDS/Classes/SelectorGroupHandlerBase.swift @@ -68,6 +68,21 @@ open class SelectorGroupHandlerBase: Control, Changeable { super.reset() selectorViews.forEach{ $0.reset() } } + + open override func updateAccessibilityLabel() { + if !accessibilityTraits.contains(.selected) && isSelected { + accessibilityTraits.insert(.selected) + } else if accessibilityTraits.contains(.selected) && !isSelected{ + accessibilityTraits.remove(.selected) + } + + if !accessibilityTraits.contains(.notEnabled) && !isEnabled { + accessibilityTraits.insert(.notEnabled) + } else if accessibilityTraits.contains(.notEnabled) && !isEnabled { + accessibilityTraits.remove(.notEnabled) + } + setAccessibilityLabel(for: selectorViews) + } } open class SelectorGroupSelectedHandlerBase: SelectorGroupHandlerBase{ @@ -76,4 +91,13 @@ open class SelectorGroupSelectedHandlerBase: SelectorGroup public var selectedHandler: HandlerType? { return selectorViews.filter { $0.isSelected == true }.first } + + open override func updateAccessibilityLabel() { + super.updateAccessibilityLabel() + if let selectedHandler, let value = selectedHandler.accessibilityValue, let label = selectedHandler.accessibilityLabel { + accessibilityValue = "\(label) \(value)" + } else { + accessibilityValue = nil + } + } } diff --git a/VDS/Classes/SelectorItemBase.swift b/VDS/Classes/SelectorItemBase.swift index e85e9117..9575f7a2 100644 --- a/VDS/Classes/SelectorItemBase.swift +++ b/VDS/Classes/SelectorItemBase.swift @@ -270,9 +270,16 @@ open class SelectorItemBase: Control, Errorable, } open override func updateAccessibilityLabel() { + accessibilityValue = isSelected ? "1" : "0" + if !accessibilityTraits.contains(.selected) && isSelected { + accessibilityTraits.insert(.selected) + } else if accessibilityTraits.contains(.selected) && !isSelected{ + accessibilityTraits.remove(.selected) + } + if !accessibilityTraits.contains(.notEnabled) && !isEnabled { accessibilityTraits.insert(.notEnabled) - } else { + } else if accessibilityTraits.contains(.notEnabled) && !isEnabled { accessibilityTraits.remove(.notEnabled) } setAccessibilityLabel(for: [label, childLabel, errorLabel]) diff --git a/VDS/Components/Buttons/Button/ButtonBase.swift b/VDS/Components/Buttons/Button/ButtonBase.swift index b11d7f9a..c27a4a06 100644 --- a/VDS/Components/Buttons/Button/ButtonBase.swift +++ b/VDS/Components/Buttons/Button/ButtonBase.swift @@ -161,7 +161,7 @@ open class ButtonBase: UIButton, Buttonable, Handlerable, ViewProtocol, Resettab open func updateAccessibilityLabel() { if !accessibilityTraits.contains(.notEnabled) && !isEnabled { accessibilityTraits.insert(.notEnabled) - } else { + } else if accessibilityTraits.contains(.notEnabled) && !isEnabled { accessibilityTraits.remove(.notEnabled) } } diff --git a/VDS/Components/Checkbox/Checkbox.swift b/VDS/Components/Checkbox/Checkbox.swift index 7ea46a3f..2b3ae6d7 100644 --- a/VDS/Components/Checkbox/Checkbox.swift +++ b/VDS/Components/Checkbox/Checkbox.swift @@ -18,6 +18,7 @@ open class Checkbox: SelectorBase { open override func setup() { super.setup() + accessibilityLabel = "Checkbox" backgroundColorConfiguration.setSurfaceColors(VDSColor.elementsPrimaryOnlight, VDSColor.elementsPrimaryOndark, forState: .selected) backgroundColorConfiguration.setSurfaceColors(VDSColor.elementsPrimaryOnlight, VDSColor.elementsPrimaryOndark, forState: [.selected, .highlighted]) diff --git a/VDS/Components/Checkbox/CheckboxGroup.swift b/VDS/Components/Checkbox/CheckboxGroup.swift index 530484ca..0c499e42 100644 --- a/VDS/Components/Checkbox/CheckboxGroup.swift +++ b/VDS/Components/Checkbox/CheckboxGroup.swift @@ -55,6 +55,7 @@ open class CheckboxGroup: SelectorGroupHandlerBase { } } } + setNeedsUpdate() } } diff --git a/VDS/Components/RadioBox/RadioBoxGroup.swift b/VDS/Components/RadioBox/RadioBoxGroup.swift index ef6fade0..d0f8bef2 100644 --- a/VDS/Components/RadioBox/RadioBoxGroup.swift +++ b/VDS/Components/RadioBox/RadioBoxGroup.swift @@ -23,6 +23,7 @@ open class RadioBoxGroup: SelectorGroupSelectedHandlerBase { for selector in selectorViews { selector.onClick = { [weak self] handler in self?.didSelect(handler) + self?.setNeedsUpdate() } mainStackView.addArrangedSubview(selector) } @@ -47,6 +48,7 @@ open class RadioBoxGroup: SelectorGroupSelectedHandlerBase { } } } + setNeedsUpdate() } } @@ -81,8 +83,6 @@ open class RadioBoxGroup: SelectorGroupSelectedHandlerBase { open override func setup() { super.setup() - isAccessibilityElement = true - accessibilityTraits = .button addSubview(mainStackView) ensureDevice() mainStackView.pinToSuperView() diff --git a/VDS/Components/RadioBox/RadioBoxItem.swift b/VDS/Components/RadioBox/RadioBoxItem.swift index 2b2f409b..380383b9 100644 --- a/VDS/Components/RadioBox/RadioBoxItem.swift +++ b/VDS/Components/RadioBox/RadioBoxItem.swift @@ -248,12 +248,21 @@ open class RadioBoxItem: Control, Changeable { } open override func updateAccessibilityLabel() { + accessibilityValue = isSelected ? "1" : "0" + if !accessibilityTraits.contains(.selected) && isSelected { + accessibilityTraits.insert(.selected) + } else if accessibilityTraits.contains(.selected) && !isSelected{ + accessibilityTraits.remove(.selected) + } + if !accessibilityTraits.contains(.notEnabled) && !isEnabled { accessibilityTraits.insert(.notEnabled) - } else { + } else if accessibilityTraits.contains(.notEnabled) && !isEnabled { accessibilityTraits.remove(.notEnabled) } - setAccessibilityLabel(for: [textLabel, subTextLabel, subTextRightLabel]) + if accessibilityLabel == nil { + setAccessibilityLabel(for: [textLabel, subTextLabel, subTextRightLabel]) + } } //-------------------------------------------------- diff --git a/VDS/Components/RadioButton/RadioButtonGroup.swift b/VDS/Components/RadioButton/RadioButtonGroup.swift index 2a017d1b..9d8f67eb 100644 --- a/VDS/Components/RadioButton/RadioButtonGroup.swift +++ b/VDS/Components/RadioButton/RadioButtonGroup.swift @@ -23,6 +23,7 @@ open class RadioButtonGroup: SelectorGroupSelectedHandlerBase { for selector in selectorViews { selector.onClick = { [weak self] handler in self?.didSelect(handler) + self?.setNeedsUpdate() } mainStackView.addArrangedSubview(selector) } @@ -49,6 +50,7 @@ open class RadioButtonGroup: SelectorGroupSelectedHandlerBase { } } } + setNeedsUpdate() } } @@ -86,8 +88,6 @@ open class RadioButtonGroup: SelectorGroupSelectedHandlerBase { open override func setup() { super.setup() - isAccessibilityElement = true - accessibilityTraits = .button addSubview(mainStackView) mainStackView.pinToSuperView() diff --git a/VDS/Components/Toggle/Toggle.swift b/VDS/Components/Toggle/Toggle.swift index 6b4f8ea8..7535271f 100644 --- a/VDS/Components/Toggle/Toggle.swift +++ b/VDS/Components/Toggle/Toggle.swift @@ -312,9 +312,16 @@ open class Toggle: Control, Changeable { } open override func updateAccessibilityLabel() { + accessibilityValue = isSelected ? "1" : "0" + if !accessibilityTraits.contains(.selected) && isSelected { + accessibilityTraits.insert(.selected) + } else if accessibilityTraits.contains(.selected) && !isSelected{ + accessibilityTraits.remove(.selected) + } + if !accessibilityTraits.contains(.notEnabled) && !isEnabled { accessibilityTraits.insert(.notEnabled) - } else { + } else if accessibilityTraits.contains(.notEnabled) && !isEnabled{ accessibilityTraits.remove(.notEnabled) } setAccessibilityLabel(for: [label]) diff --git a/VDS/Components/Tooltip/Tooltip.swift b/VDS/Components/Tooltip/Tooltip.swift index 4d5a291f..fd75c610 100644 --- a/VDS/Components/Tooltip/Tooltip.swift +++ b/VDS/Components/Tooltip/Tooltip.swift @@ -168,7 +168,7 @@ open class Tooltip: Control, TooltipLaunchable { open override func updateAccessibilityLabel() { if !accessibilityTraits.contains(.notEnabled) && !isEnabled { accessibilityTraits.insert(.notEnabled) - } else { + } else if accessibilityTraits.contains(.notEnabled) && !isEnabled { accessibilityTraits.remove(.notEnabled) } var label = title