TouchUpOutside is not working like it should
<p>I created a menue with some custom UIButtons. I only changed the drawRect function:</p>

<pre><code>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)
        }
</code></pre>

<p>And I got three functions to handle the touchevents:</p>

<pre><code>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)
        }

    }
</code></pre>

<p>If I touch on one button the label appear like it should. But if I move my finger away from the button and leave the display it still call the .TouchUpInside function. It only works like it should if I move my finger a very long way off the button. What is the problem here?</p>

<p>Kindly Regards!</p>