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

时间:2016-10-21 16:53:52

标签: ios swift uitableview

我有一个带有动态填充行的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,仍然有这个非常明显的延迟。

1 个答案:

答案 0 :(得分:3)

查看UIScrollView的{​​{3}}属性。 我通过在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
    }
}