// // AccessibilityUpdatable.swift // VDS // // Created by Matt Bruce on 6/20/24. // import Foundation import UIKit public protocol AccessibilityUpdatable { var bridge_isAccessibilityElementBlock: AXBoolReturnBlock? { get set } var bridge_accessibilityLabelBlock: AXStringReturnBlock? { get set } var bridge_accessibilityValueBlock: AXStringReturnBlock? { get set } var bridge_accessibilityHintBlock: AXStringReturnBlock? { get set } var bridge_accessibilityActivateBlock: AXBoolReturnBlock? { get set } } private struct AccessibilityBridge { static var isAccessibilityElementBlockKey: UInt8 = 0 static var activateBlockKey: UInt8 = 1 static var valueBlockKey: UInt8 = 2 static var hintBlockKey: UInt8 = 3 static var labelBlockKey: UInt8 = 4 } extension AccessibilityUpdatable where Self: NSObject { public var bridge_isAccessibilityElementBlock: AXBoolReturnBlock? { get { return objc_getAssociatedObject(self, &AccessibilityBridge.isAccessibilityElementBlockKey) as? AXBoolReturnBlock } set { objc_setAssociatedObject(self, &AccessibilityBridge.isAccessibilityElementBlockKey, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) // if #available(iOS 17, *) { // self.isAccessibilityElementBlock = newValue // } } } public var bridge_accessibilityActivateBlock: AXBoolReturnBlock? { get { return objc_getAssociatedObject(self, &AccessibilityBridge.activateBlockKey) as? AXBoolReturnBlock } set { objc_setAssociatedObject(self, &AccessibilityBridge.activateBlockKey, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) // if #available(iOS 17, *) { // self.accessibilityActivateBlock = newValue // } } } public var bridge_accessibilityValueBlock: AXStringReturnBlock? { get { return objc_getAssociatedObject(self, &AccessibilityBridge.valueBlockKey) as? AXStringReturnBlock } set { objc_setAssociatedObject(self, &AccessibilityBridge.valueBlockKey, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) // if #available(iOS 17, *) { // self.accessibilityValueBlock = newValue // } } } public var bridge_accessibilityHintBlock: AXStringReturnBlock? { get { return objc_getAssociatedObject(self, &AccessibilityBridge.hintBlockKey) as? AXStringReturnBlock } set { objc_setAssociatedObject(self, &AccessibilityBridge.hintBlockKey, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) // if #available(iOS 17, *) { // self.accessibilityHintBlock = newValue // } } } public var bridge_accessibilityLabelBlock: AXStringReturnBlock? { get { return objc_getAssociatedObject(self, &AccessibilityBridge.labelBlockKey) as? AXStringReturnBlock } set { objc_setAssociatedObject(self, &AccessibilityBridge.labelBlockKey, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) // if #available(iOS 17, *) { // self.accessibilityLabelBlock = newValue // } } } }