当有长按手势识别器时,UIButton 不会改变文本颜色

Posted

技术标签:

【中文标题】当有长按手势识别器时,UIButton 不会改变文本颜色【英文标题】:UIButton not going changing text color when there is long-press gesture recognizer 【发布时间】:2016-09-29 20:45:47 【问题描述】:

我有以下代码:

deleteAllButton.setTitle("Delete", forState: .Normal)
        deleteAllButton.titleLabel?.numberOfLines = 2
        deleteAllButton.setTitleColor(UIColor.blackColor(), forState: .Normal)
        deleteAllButton.titleLabel?.font = UIFont.systemFontOfSize(keyboardFontSize)
    //  deleteAllButton.addTarget(self, action: #selector(deletekeyPressed), forControlEvents: .TouchUpInside)

        let deleteLPGR = UILongPressGestureRecognizer(target: self, action: #selector(deleteButtonLongPress))
        deleteLPGR.minimumPressDuration = 0
        deleteLPGR.delaysTouchesBegan = true

        deleteAllButton.addGestureRecognizer(deleteLPGR)

通常当按下 UIButton 时,文本会自动更改颜色以指示它处于“按下”状态。但是,由于我添加了长按手势识别器,因此该按钮并不表示它处于“按下”状态。

我怎样才能让触摸事件通过按钮,让用户感觉按钮实际上被“按下”了?

【问题讨论】:

【参考方案1】:

我认为您不需要添加手势识别器。

只需尝试为高亮状态设置标题颜色,它应该可以工作

deleteAllButton.setTitleColor(UIColor.redColor(), forState: .Highlighted)

希望这能解决您的问题。

【讨论】:

【参考方案2】:

只要把deleteLPGR.minimumPressDuration = 0改成deleteLPGR.minimumPressDuration = 1就可以看到颜色变化了

【讨论】:

以上是关于当有长按手势识别器时,UIButton 不会改变文本颜色的主要内容,如果未能解决你的问题,请参考以下文章

长按手势在 UIButton 中显示图像

确定长按手势识别器的位置

当我添加平移手势识别器时,我的按钮不会保持突出显示?

复制iOS的仪表板应用按钮,一个带有长按手势识别器的按钮

未完全加载单元格时未调用 didSelectItemAtIndexPath

一起识别长按和平移手势识别器