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

时间:2019-01-08 11:39:32

标签: ios swift

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

3 个答案:

答案 0 :(得分:3)

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!) }
    })
}

答案 1 :(得分:2)

来自文档:

  

当触摸事件进入控件的边界时,该控件将突出显示,而当发生触摸事件或触摸事件超出控件的边界时,它将丢失该突出显示...

已简化:UIButton在用户按下按钮直到用户将其取消按下时都会突出显示。

因此,如果您需要处理按下按钮的时刻,请为事件.touchUpInside设置按钮的操作


但是,如果您仅对某些状态的图像感兴趣。为状态.normal和状态.highlighted设置图片

答案 2 :(得分:0)

<TextBlock.Text>
   <MultiBinding StringFormat="{}{0} - {1}">

                    <Binding Path="PK_ID_Order"/>
                    <Binding Path="Wording" />
    </MultiBinding>
</TextBlock.Text>

应该是

button.setImage("highlited_image", for: .highlighted)

我想...