From 51b151a73f3a130caa20b0ee77c6630d202242f1 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Fri, 28 Jun 2024 17:27:37 -0500 Subject: [PATCH 1/2] partial bugfix Signed-off-by: Matt Bruce --- .../TextFields/InputField/FieldTypes/CreditCard.swift | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/VDS/Components/TextFields/InputField/FieldTypes/CreditCard.swift b/VDS/Components/TextFields/InputField/FieldTypes/CreditCard.swift index 429b68be..f0a40bc7 100644 --- a/VDS/Components/TextFields/InputField/FieldTypes/CreditCard.swift +++ b/VDS/Components/TextFields/InputField/FieldTypes/CreditCard.swift @@ -51,6 +51,14 @@ extension InputField { } } + public var accessibilityLabel: String { + switch self { + case .generic, .placeholder: return "credit card" + default: return rawValue + } + } + + func separatorIndices(_ length: Int) -> [Int] { var indices: [Int] = [4, 8, 12] switch self { @@ -135,7 +143,7 @@ extension InputField { fileprivate func updateLeftImage(_ inputField: InputField) { let imageName = inputField.cardType.imageName(surface: inputField.surface) creditCardImageView.image = BundleManager.shared.image(for: imageName) - creditCardImageView.accessibilityLabel = inputField.cardType.rawValue + creditCardImageView.accessibilityLabel = inputField.cardType.accessibilityLabel } override func updateView(_ inputField: InputField) { From 90e88f37da1ff404e688356629c9e802a561f63c Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Sat, 29 Jun 2024 10:24:28 -0500 Subject: [PATCH 2/2] updated helper Signed-off-by: Matt Bruce --- VDS/Components/Tilelet/Tilelet.swift | 6 +++--- VDS/Extensions/UIView+Accessibility.swift | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/VDS/Components/Tilelet/Tilelet.swift b/VDS/Components/Tilelet/Tilelet.swift index 0da20709..615c0b40 100644 --- a/VDS/Components/Tilelet/Tilelet.swift +++ b/VDS/Components/Tilelet/Tilelet.swift @@ -414,7 +414,7 @@ open class Tilelet: TileContainerBase { /// Used to update any Accessibility properties. open override var accessibilityElements: [Any]? { get { - var views = [UIView]() + var views = [AnyObject]() // grab the available views in order if badgeModel != nil { @@ -422,9 +422,9 @@ open class Tilelet: TileContainerBase { } if titleModel != nil || subTitleModel != nil || eyebrowModel != nil { - views.append(titleLockup) + let titleLockupViews = gatherAccessibilityElements(from: titleLockup) + views.append(contentsOf: titleLockupViews) } - containerView.setAccessibilityLabel(for: views) // get the views to return diff --git a/VDS/Extensions/UIView+Accessibility.swift b/VDS/Extensions/UIView+Accessibility.swift index ee247175..153c517d 100644 --- a/VDS/Extensions/UIView+Accessibility.swift +++ b/VDS/Extensions/UIView+Accessibility.swift @@ -14,14 +14,14 @@ extension UIView { /// - views: Array of Views that you want to join the accessibilityLabel. /// - separator: Separator used between the accessibilityLabel for each UIView. /// - Returns: Joined String. - public func combineAccessibilityLabel(for views: [UIView], separator: String = ", ") -> String? { - let labels = views.map({($0.accessibilityLabel?.isEmpty ?? true) ? nil : $0.accessibilityLabel}).compactMap({$0}) + public func combineAccessibilityLabel(for views: [AnyObject], separator: String = ", ") -> String? { + let labels: [String] = views.map({($0.accessibilityLabel?.isEmpty ?? true) ? nil : $0.accessibilityLabel}).compactMap({$0}) return labels.joined(separator: separator) } /// AccessibilityLabel helper for joining the accessibilityLabel property of all views passed in. /// - Parameter views: Array of Views that you want to join the accessibilityLabel. - public func setAccessibilityLabel(for views: [UIView]) { + public func setAccessibilityLabel(for views: [AnyObject]) { accessibilityLabel = combineAccessibilityLabel(for: views) } @@ -50,8 +50,8 @@ extension UIView { return isIntersecting } - public func gatherAccessibilityElements(from view: UIView) -> [Any] { - var elements: [Any] = [] + public func gatherAccessibilityElements(from view: AnyObject) -> [AnyObject] { + var elements: [AnyObject] = [] for subview in view.subviews { if subview.isAccessibilityElement && subview.isVisibleOnScreen {