在 aUIControl
中,如果我重写isHighlighted
以设置私有_isHighlighted
属性,然后检查控件state
是否包含.highlighted
,则状态仍然准确地反映了更改。请参阅下面的代码。
我的问题是,这怎么可能?我从不调用super.isHighlighted
或操纵 state 财产。state
是一个OptionSet
必须将.highlighted
属性插入到集合中的属性,据我所知,如果我覆盖该属性,则不会或不应该发生这种情况。
我能想到的唯一其他解释是,state
它实际上是基于其他属性(即 , 等)的计算isSelected
属性isEnabled
。
class MyControl: UIControl {
private var _isHighlighted: Bool = false
override var isHighlighted: Bool {
get { return self._isHighlighted }
set { self._isHighlighted = newValue }
}
}
let myControl = MyControl()
myControl.isHighlighted = true
myControl.state.contains(.highlighted) // returns true