代码之家  ›  专栏  ›  技术社区  ›  Jan Kaiser

NSButton不调用其操作

  •  4
  • Jan Kaiser  · 技术社区  · 6 年前

    我对NSButton的行为有点小麻烦。我以编程方式创建一个按钮。。。

    let continueButton = NSButton(title: "Continue", target: self, action: #selector(self.continueButtonClicked))
    

    。。。调用此函数:

    @objc func continueButtonClicked() {
        print("continueButtonClicked")
    }
    

    然而 continueButtonClicked 从未调用,并且该按钮似乎已禁用。我尝试过启用它,但没有成功。

    我错过什么了吗?

    2 回复  |  直到 6 年前
        1
  •  3
  •   Chris    6 年前

    我认为您需要在方法中包含发件人信息。以下代码应起作用,并与Swift 4兼容。

    let continueButton = NSButton(title: "Continue", target: self, action: #selector(self.continueButtonClicked(_:)))
    
    @objc func continueButtonClicked(_ sender: NSButton) {
        print("Continue button clicked")
    }
    
        2
  •  2
  •   Jan Kaiser    6 年前

    好吧,事实证明,这个按钮确实调用了这个动作,但它只是在按下几秒钟后才做出反应。我设法弄明白了原因是我在按钮的superview上有一个NSClickGestureReckognizer。在按钮显示时禁用它,为我解决了这个问题。

    我希望这能帮助遇到类似问题的人。