// // Accessable.swift // VDS // // Created by Matt Bruce on 7/26/22. // import Foundation import UIKit public protocol Accessable { var accessibilityHintEnabled: String? { get set } var accessibilityHintDisabled: String? { get set } var accessibilityValueEnabled: String? { get set } var accessibilityValueDisabled: String? { get set } var accessibilityLabelEnabled: String? { get set } var accessibilityLabelDisabled: String? { get set } } //Configurations to set within the UIControl extension ModelHandlerable where Self: UIView { private var accessableModel: Accessable? { guard let model = self.model as? Accessable else { return nil } return model } public func setAccessibilityHint(_ override: Bool? = nil) { let check = override ?? !model.disabled if let value = accessableModel?.accessibilityHintEnabled, check { accessibilityHint = value } else if let value = accessableModel?.accessibilityHintDisabled, !check { accessibilityHint = value } } public func setAccessibilityValue(_ override: Bool? = nil) { let check = override ?? !model.disabled if let value = accessableModel?.accessibilityValueEnabled, check { accessibilityValue = value } else if let value = accessableModel?.accessibilityValueDisabled, !check { accessibilityValue = value } } public func setAccessibilityLabel(_ override: Bool? = nil) { let check = override ?? !model.disabled if let value = accessableModel?.accessibilityLabelEnabled, check { accessibilityLabel = value } else if let value = accessableModel?.accessibilityLabelDisabled, !check { accessibilityLabel = value } } }