UIButton没有在swift中调用动作函数

时间:2016-02-23 21:55:40

标签: ios swift uibutton

我有一个以编程方式创建的按钮但由于某些奇怪的原因,按下它时它不会激活该动作。有几个按钮,我已经从代码中删除了其他按钮,这里是不起作用的按钮:

struct Buttons {

 var hintButton: UIButton!
 let hintBtn = UIButton(frame: CGRect(x: 10, y: 20, width: 70, height: 70))
 init() {hintBtn.titleEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
    hintBtn.tag = 2
    hintBtn.setTitle("Hint", forState: .Normal)
    hintBtn.setTitleColor(UIColor.whiteColor(), forState: .Normal)
    hintButton = hintBtn
}

} 这是viewController中的代码:

  override func viewDidLoad() {
        super.viewDidLoad()

        AddAllGraphics()
        ButtonActions()
       self.buttons.hintBtn.enabled = true
    }

     func AddAllGraphics() {
    self.view.addSubview(buttons.hintBtn)
}

    func ButtonActions() {
      buttons.hintBtn.addTarget(self, action: "giveHint:", forControlEvents: .TouchUpInside)
    }

     func giveHint(sender:UIButton) {
        if(sender.tag == 2){
          buttons.hintBtn.enabled = false
          print("It Works")
        }
      }

我尝试在“giveHint”函数中设置一个断点,但是在按下按钮时从不调用它。我已经尝试在viewDidLoad中放置self.buttons.btn.userInteractionEnabled = true但它仍然不起作用。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

上面的代码对我有用,但我必须正确地初始化结构:

struct Buttons {
var hintButton: UIButton!
let hintBtn = UIButton(frame: CGRect(x: 10, y: 50, width: 70, height: 70))
init() {
    hintBtn.titleEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
    hintBtn.tag = 2
    hintBtn.setTitle("Hint", forState: .Normal)
    hintBtn.setTitleColor(UIColor.whiteColor(), forState: .Normal)
    hintButton = hintBtn
}
}

答案 1 :(得分:0)

发现了这个问题。该按钮位于另一个禁用了用户交互的视图后面。由于视图很清楚,我以为我在按下按钮。