【问题标题】:Highlighting button inside UITableView reacts slowlyUITableView 中的突出显示按钮反应缓慢
【发布时间】:2016-10-21 16:53:51
【问题描述】:

我有一个带有动态填充行的 UITableView,但顶部还有一个部分包含一个始终相同的特殊单元格(具有不同的标识符)。

我在这个单元格中添加了两个按钮,它们确实可以工作,但是它们的反应很差。也就是说,高亮仅在大约 0.25 秒后发生。

我正在使用以下稍微定制的按钮:

import UIKit

class HighlightingButton: UIButton {

    override var isHighlighted: Bool {
        didSet {
            if isHighlighted {
                backgroundColor = UIColor.lightGray
            } else {
                backgroundColor = UIColor.white
            }
        }
    }

}

重要的是,用户得到他们点击按钮的清晰反馈。然而,尽管事件似乎很快被触发(通过打印一些输出来判断),但这并不令人满意。

在正常视图中,HighlightingButton 会按预期工作,并且突出显示会尽快闪烁。

UITableViewCell 的事件处理中是否存在导致这种缓慢的原因?

更新

我创建了一个 minimalistic example project 来演示该问题。 没有任何 GestureRecognizers,仍然有这个非常明显的延迟。

【问题讨论】:

  • 问题可能与按钮无关,也与 UITableViewCell 类无关。我已经在单元格上尝试了您的按钮,并且没有任何问题。也许您在该单元格或其他任何地方有一个长按手势,我们应该注意这一点?
  • 我创建了一个简单的示例项目来演示这个问题。所以它也发生在一个非常简单的环境中,没有任何周围的干扰。如果您有时间看一看,我将不胜感激。

标签: ios swift uitableview


【解决方案1】:

查看UIScrollViewdelaysContentTouches 属性。 我通过在 tableView 上将其设置为 false 来解决您的问题,并且所有这些都是 scrollview 子视图。

所以你应该像这样添加一个tableView IBOutlet 并覆盖viewDidLoad 方法:

override func viewDidLoad() {
    super.viewDidLoad()
    tableView.delaysContentTouches = false
    for case let subview as UIScrollView in tableView.subviews {
        subview.delaysContentTouches = false
    }
}

【讨论】:

猜你喜欢
  • 2020-12-25
  • 2012-09-12
  • 1970-01-01
  • 1970-01-01
  • 2015-09-27
  • 2013-03-26
  • 2019-04-27
  • 1970-01-01
相关资源
最近更新 更多