96 lines
3.2 KiB
Swift
96 lines
3.2 KiB
Swift
//
|
|
// 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
|
|
// }
|
|
}
|
|
}
|
|
|
|
}
|
|
|