56 lines
1.8 KiB
Swift
56 lines
1.8 KiB
Swift
//
|
|
// 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
|
|
}
|
|
}
|
|
}
|