gpt4 book ai didi

ios - 在 UIButton 上多次调用 isHighlighted

转载 作者:行者123 更新时间:2023-11-28 11:01:44 37 4
gpt4 key购买 nike

我已经对 UIButton 进行了子类化,并希望在按钮进入突出显示状态时仅调用一次委托(delegate)方法,并在按钮进入未突出显示状态时再次调用一次:

override var isHighlighted: Bool {
didSet {
if isHighlighted {
delegate?.buttonHighlightStateDidChange(highlighted: true)
} else {
delegate?.buttonHighlightStateDidChange(highlighted: false)
}
}
}

但是,当我按下按钮时,似乎重复调用了 didSet。我在这里做错了什么?如何只调用一次委托(delegate)方法?

最佳答案

我建议不要以这种方式使用您的子类。 UIControl 有一个内置的机制来获取回调以响应控制事件:

func registerActions(for button: UIButton) {
button.addTarget(self, action: #selector(MyClass.buttonIsHighlighted(sender:)), for: .touchDown)

button.addTarget(self, action: #selector(MyClass.buttonIsUnHighlighted(sender:)), for: .touchUpInside)
button.addTarget(self, action: #selector(MyClass.buttonIsUnHighlighted(sender:)), for: .touchUpOutside)
}

func buttonIsHighlighted(sender: UIButton) {
// highlighted
}

func buttonIsUnHighlighted(sender: UIButton) {
// unhighlighted
}

关于ios - 在 UIButton 上多次调用 isHighlighted,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40298165/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com