title: UIControl endTrackingWithTouch not called
body: <p>I have a view with a tap gesture recognizer.  A subview of this view is an instance of my custom class, which inherits from UIControl.  I am having an issue where the UIControl subclass will sometimes allow touch events to pass through to the parent view when it shouldn't.</p>
  
  <p>Within the UIControl subclass, I have overridden these functions (code is in Swift)</p>
  
  <pre><code>override func beginTrackingWithTouch(touch: UITouch, withEvent event: UIEvent) -&gt; Bool
  {
      return true
  }
  
  override func continueTrackingWithTouch(touch: UITouch, withEvent event: UIEvent) -&gt; Bool
  {
      // The code here moves this UIControl so its center is at the touchpoint
      return true
  }
  
  override func endTrackingWithTouch(touch: UITouch,withEvent event: UIEvent)
  {
      // Something important happens here!
  }
  </code></pre>
  
  <p>This system works just fine if the user touches down within the UIControl, drags the control around in <em>both</em> X and Y directions, and then lifts off the screen.  In this case, all three of these functions are called, and the "something important" happens.</p>
  
  <p>However, if the user touches down with the UIControl, drags the control around <em>only</em> in the X direction, and then lifts off the screen, we have a problem.  The first two functions are called, but when the touchpoint lifts off the screen, the tap gesture recognizer is called, and endTrackingWithTouch is not called.</p>
  
  <p>How do I make sure that endTrackingWithTouch is always called?</p>