在UITableViewHeaderFooterView中有一个按钮

时间:2018-10-14 18:01:13

标签: ios swift uitableview uibutton uigesturerecognizer

我想在HeaderView中添加一个按钮,但是触摸无法识别。我想念什么?

class GSTableHeaderView: UITableViewHeaderFooterView, ReusableView {
  var delegate: tableHeaderViewDelegate?
  let showAllOrHideButton = GSShowAllOrHideButton()

  override init(reuseIdentifier: String?) {
    super.init(reuseIdentifier: reuseIdentifier)
    self.isUserInteractionEnabled = true
    setupSubviews()
    setupConstraints()
  }

  func setupSubviews() {
    contentView.addSubview(showAllOrHideButton)
    contentView.isUserInteractionEnabled = true
    showAllOrHideButton.addTarget(self, action: #selector(handleShowAll), for: .touchUpInside)
  }

  func setupConstraints() {
    showAllOrHideButton.anchor(top: nil, leading: nil, bottom: contentView.bottomAnchor, trailing: contentView.trailingAnchor, paddingTop: 0, paddingLeading: 0, paddingBottom: 0, paddingTrailing: 16, width: 0, height: 0)
  }

  @objc func handleShowAll() {
    showAllOrHideButton.isSelected.toggle()
  }

  required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
  }
}

是我的点击被吃掉了吗还是UITableViewHeaderFooterView中的按钮根本不被支持?

1 个答案:

答案 0 :(得分:0)

如果contentview顶部没有其他视图,您的代码应该可以工作。请检查Xcode中的视图层次结构,按钮的位置在哪里。试试这个:
更改您的:

contentView.addSubview(showAllOrHideButton) 至:  self.addSubview(showAllOrHideButton)