ReadViewSDK/Sources/RDReaderView/LegacyRDReaderController/SSEventTrigger.swift
2026-05-21 19:40:51 +08:00

39 lines
978 B
Swift

//
// EventTrigger.swift
//
//
// Created by yangsq on 2020/11/4.
//
import Foundation
protocol SSEventTrigger {
associatedtype Event
typealias TriggerEvent = (Event) -> Void
var triggerEvent: TriggerEvent? { get set }
func trigger(event: TriggerEvent?)
}
private var triggerEventKey: UInt8 = 0
extension SSEventTrigger {
private var _triggerEvent:TriggerEvent? {
get {return objc_getAssociatedObject(self, &triggerEventKey) as? Self.TriggerEvent}
set {objc_setAssociatedObject(self, &triggerEventKey, newValue, .OBJC_ASSOCIATION_COPY_NONATOMIC)}
}
var triggerEvent: TriggerEvent? {
get{_triggerEvent}
set{
if newValue != nil {
_triggerEvent = newValue!
}
}
}
func trigger(event: TriggerEvent?) {
if event != nil {
objc_setAssociatedObject(self, &triggerEventKey, event!, .OBJC_ASSOCIATION_COPY_NONATOMIC)
}
}
}