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

Posted

技术标签:

【中文标题】UITableView 中的突出显示按钮反应缓慢【英文标题】:Highlighting button inside UITableView reacts slowly 【发布时间】: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 类无关。我已经在单元格上尝试了您的按钮,并且没有任何问题。也许您在该单元格或其他任何地方有一个长按手势,我们应该注意这一点? 我创建了一个简单的示例项目来演示这个问题。所以它也发生在一个非常简单的环境中,没有任何周围的干扰。如果您有时间看一看,我将不胜感激。 【参考方案1】:

查看UIScrollView 的delaysContentTouches 属性。 我通过在 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
    

【讨论】:

其实这个问题是重复的:***.com/q/22924817/1689376 完美。非常感谢你!抱歉重复了,我没有找到那个问题。

以上是关于UITableView 中的突出显示按钮反应缓慢的主要内容,如果未能解决你的问题,请参考以下文章

UITableview 单元格中的按钮不会在快速点击时突出显示

uitableview 单元格突出显示

突出显示时,表格单元格中的 iOS 自定义按钮变暗

如何突出显示 UITableView 中的一行

使用反应在引导程序中突出显示当前页面

ios - UITableView 删除按钮不会对手势做出反应