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

时间:2018-07-30 09:52:59

标签: ios swift uibutton touch

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

  $('#employees-form-submit').on('click', function(e) {
    e.preventDefault();
    var form      = $('#employees-form');
    var formData  = form.serialize();
    var url       = form.attr('action');
    $originalItem = form.parent('#employees').siblings('#summary')

    console.log(formData);

    $.ajax({
      url: url,
      data: formData,
      type: 'PUT',
      originalItem: $originalItem,
      success: function(data) {
        target = this.originalItem.find('#employees-summary');
        data.targetEmployees.forEach(function(emp) {
          target.find("ul").append(
            `<li>${emp.firstName} ${emp.lastName} - email: ${emp.eMail}</li>`
          )
        })
        showTab('summary-tab')
      }
    });
  });

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

但操作已正确触发:

    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)

我尝试了什么: 添加自定义

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


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

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

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:0)

检查uibutton的isselected属性(如果已选择按钮),然后更改按钮的背景色

答案 1 :(得分:0)

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

编辑:

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

添加scrollView.delaysContentTouches = NO;可以完全解决问题。

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