我用一些自定义UIButton创建了一个menue。我只更改了drawRect函数:
for button in buttons {
button.addTarget(self, action: #selector(showLabel), forControlEvents: .TouchDown)
button.addTarget(self, action: #selector(buttonAction), forControlEvents: .TouchUpInside)
button.addTarget(self, action: #selector(labelDelete), forControlEvents: .TouchUpOutside)
button.addTarget(self, action: #selector(labelDelete), forControlEvents: .TouchCancel)
}
我有三个功能来处理touchevents:
func labelDelete(sender: HexagonButton!) {
label?.alpha = 0
label?.hidden = true
}
func showLabel(sender: HexagonButton!) {
label!.frame = CGRect(x: self.view.frame.width/2 - 150 + lastContentOffset, y: 5, width: 300, height: 30)
label!.text = sender.labelName
self.label?.hidden = false
UIView.animateWithDuration(1.0, animations:{
self.label?.alpha = 1
})
}
func buttonAction(sender: HexagonButton!) {
label?.alpha = 0
label?.hidden = true
if sender.viewControllerName != "nil" {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier(sender.viewControllerName)
self.navigationController?.pushViewController(vc, animated: true)
}
}
如果我触摸一个按钮,标签就会显示出来。但是,如果我将手指从按钮移开并离开显示器,它仍然会调用.TouchUpInside函数。只有当我的手指离按钮很远时,它才能正常工作。这有什么问题?
请问!