1

UIButton在理解 的概念时,我得到了一个奇怪的结果UIControlState。这是我与UIButton.

import UIKit

class ViewController: UIViewController {

    let normalBtn: UIButton = {
        let button = UIButton()

        button.frame = CGRect(x: 80, y: 200, width: 200, height: 100)

        button.setTitle("", for: .normal)
        button.setTitle("", for: .highlighted)
        button.setTitle("", for: .selected)
        button.setTitle("", for: .focused)

        button.titleLabel?.font = UIFont.systemFont(ofSize: 50)

        return button
    }()

    override func viewDidLoad() {
        super.viewDidLoad()

        view.addSubview(normalBtn)

        normalBtn.addTarget(self, action: #selector(btnSelected), for: .touchUpInside)

    }

    @objc func btnSelected() {
        print("highlight", normalBtn.isHighlighted)

        normalBtn.isSelected = !normalBtn.isSelected
    }

}

这是我关于此代码的方案。

  1. 当我触摸normalBtn时,此按钮的状态normal变为 selected
  2. 当我再次触摸normalBtn时,它的状态会从 selected变为normal
  3. 虽然这些转换,highlighted属性也应该改变,当我触摸normalBtn.

所以我改变标题的期望是

  1. -> 触摸时 -> ( normalto selected)
  2. -> 触摸时 -> ( selectedto normal)

但结果是,

  1. -> 触摸时 -> ( normalto selected)
  2. ->(selectednormal

我真的不知道为什么。关于这个问题的任何想法?谢谢。

4

2 回答 2

3

尝试将选定状态与突出显示的状态相结合。

例子:

button.setTitle("", for: UIControlState.selected.union(.highlighted))
于 2017-11-20T05:44:44.607 回答
0

已接受答案的替代语法:

button.setTitle("", for: [.selected, .highlighted])
于 2021-05-21T09:01:56.330 回答