【问题标题】:Button in table view cell表格视图单元格中的按钮
【发布时间】:2016-03-25 08:26:12
【问题描述】:

我有一个自定义按钮,它被添加到一个静态单元格中。不知何故,每当我点击按钮时,它不会像将按钮添加到普通视图时那样立即做出反应。

点击时,它会立即注册点击,但背景颜色在更改之前会稍有延迟。


要更改颜色,我在UIButton 的子类中有以下代码:

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
    super.touchesBegan(touches, withEvent: event)

    border.fillColor = .redColor()  // border is a CAShapeLayer
    print("began")                  // This prints right when the button is clicked
}

这个按钮被添加到UITableViewCell 的子类中,并且按钮正在做出反应,除了改变颜色有延迟。我该如何解决这个问题?

答案(果冻):
Jelly 的回答对我帮助很大,让按钮的反应更好一些。了解问题所在也可以更轻松地研究问题并发现按钮的反应就像在普通视图中一样,我必须在表格视图及其子视图中禁用 delaysContentTouches:

tableView.delaysContentTouches = false
tableView.subviews.forEach { ($0 as? UIScrollView)?.delaysContentTouches = false }

【问题讨论】:

  • 为什么不用UIButton:addTarget 方法而不是点击

标签: ios swift uitableview button


【解决方案1】:

在您的 tableView 上设置 delaysContentTouches = false。

【讨论】:

  • 非常感谢!我不知道表格视图中存在默认延迟(我可以在 3 分钟内接受)。
  • 实际上是在UIScrollView 上继承了UITableView。
  • 有了你的回答,效果好一点,但还是感觉有点不对劲。所以我搜索了更多,知道它是关于delaysContentTouches 更容易。我发现表格视图的子视图中有另一个UIScrollView,并且还必须禁用该滚动视图的delaysContentTouches。我将编辑我在问题中所做的事情。
  • 我不知道。看来我也从你的问题中学到了一些东西。
猜你喜欢
  • 1970-01-01
  • 2018-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-01
  • 2018-04-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多