突出显示按钮时如何获取事件而不是状态

srb*_*991 1 ios swift

我有一个按钮,每当它突出显示时,我都需要更改按钮的图像。我编写了以下代码button.setImage("highlited_image", for: .highlighted)。如果我专门将按钮的状态设置为突出显示,则该代码有效。当按钮的状态发生变化时,如何获取事件?

vad*_*ian 5

该属性isHighlighted符合 KVO,您可以添加一个观察者

@IBOutlet weak var button: UIButton!

var observation : NSKeyValueObservation?

override func viewDidLoad() {
    super.viewDidLoad()
    observation = button.observe(\.isHighlighted, options: [.old, .new], changeHandler: { _, change in
        if change.oldValue! != change.newValue! { print(change.newValue!) }
    })
}
Run Code Online (Sandbox Code Playgroud)