我有一个以编程方式创建的按钮但由于某些奇怪的原因,按下它时它不会激活该动作。有几个按钮,我已经从代码中删除了其他按钮,这里是不起作用的按钮:
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但它仍然不起作用。任何帮助将不胜感激!
答案 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)
发现了这个问题。该按钮位于另一个禁用了用户交互的视图后面。由于视图很清楚,我以为我在按下按钮。