繁体   English   中英

敲击(以编程方式)时,UIButton更改背景

[英]UIButton change background when tapped (programmatically)

我有一个自定义的UIButton,但是无法基于快速点击来更改背景或文本颜色。 如果某些方法有效,请长按:

    buton.isUserInteractionEnabled = true
    buton.setTitle("text_normal", for: .normal)
    buton.setTitle("text_highlighted", for: .highlighted)
    buton.setTitle("text_selected", for: .selected)
    buton.setTitle("text_focused", for: .focused)

按住按钮约1秒钟后,我只能获得“ text_highlighted”文本。 但是,短按一无所获。

但是该操作已正确触发:

let tap2 = UITapGestureRecognizer(target: self, action: #selector(handleTap))
buton.addGestureRecognizer(tap2)


@objc func handleTap(sender: UITapGestureRecognizer) {
    print("click")
}

我试过的:添加自定义

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
...

稍后也会触发。 并且与tocuhesEnded结合使用也不会暂时改变颜色(也许太快了)。

我也不能使用UIButton(type:.system)-它不是系统样式的按钮。

与更改文本类似,此方法也不起作用:

    self.setTitleColor(UIColor.gray, for: .normal)
    self.setTitleColor(UIColor.yellow, for: .selected)
    self.setTitleColor(UIColor.yellow, for: .highlighted)
    self.setTitleColor(UIColor.yellow, for: .focused)

我只有长按才能看到黄色。 我正在寻找类似的东西,但是它也需要快速点击。

自定义按钮正在修改layoutSubviews(),但不能修改颜色。 自定义按钮包含默认图像和标签。 整个按钮都有圆角。 但是总体上没有什么特别的。

我没有使用任何情节提要或XIB-所有内容均以编程方式在Swift 4中提供。 该按钮应该指向另一个ViewController,但是我想查看单击时的立即反馈。 从情节提要中创建时类似的东西: https : //youtu.be/lksW12megQg? t = 3m25s-现在即使是简单的alpha更改也不适用于我。

检查uibutton的isselected属性是否被选中,然后更改按钮的背景色

詹·何塞(Jen Jose)是对的-我的上课时遇到了一个问题,就是“吃光了我的一切”。 我将其移至其他ViewController时已确认这一点+表存在相同的问题,无法处理触摸事件( https://stackoverflow.com/a/9248827/1317362

编辑:

确切地说-此按钮位于UIScrollView中。

添加scrollView.delaysContentTouches = NO; 彻底解决了这个问题。

详细信息: https : //stackoverflow.com/a/16650610/1317362

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM