UITableView 内的突出显示按钮反应缓慢

Fre*_*uid 4 uitableview ios swift

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

我在这个单元格中添加了两个按钮,它们确实可以工作,但反应很差。也就是说,大约0.25秒后才会出现突出显示。

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

import UIKit

class HighlightingButton: UIButton {

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

}
Run Code Online (Sandbox Code Playgroud)

用户获得点击按钮的清晰反馈非常重要。然而,由于缓慢的突出显示,这并不令人满意,尽管事件似乎被快速触发(通过打印一些输出来判断)。

在普通视图中,此突出显示按钮按预期工作,并且突出显示会随着我的点击而快速闪烁。

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

更新

我创建了一个简约的示例项目来演示该问题。没有任何手势识别器,但仍然存在非常明显的延迟。

ale*_*nik 5

看一下 的delaysContentTouches属性UIScrollView。我通过将其设置为falsetableView 及其所有子scrollview视图来解决您的问题。

所以你应该只添加一个tableViewIBOutlet 并重写viewDidLoad方法,如下所示:

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