   override func beginTrackingWithTouch(touch: UITouch, withEvent event: UIEvent) -> Bool {
     if isSnapping {
       println("Canceled snapping")
+      canceledSnapping = true
       snapAnimUIDynamicAnimator.removeAllBehaviors()
+      if closureToCloseControl != nil {
+        cancel_delay(closureToCloseControl)
+      }
       isSnapping = false
     }
     expanded = true

    return animator
  }()
  
  /**
  Closes the control after a second
  */
  func closeLater() {
    if let lsi = lastSelectedIndex? {
      let date = dataSource!.dateAtIndex(lsi)
      delegate?.selectedDate?(date, index:lastSelectedIndex!, control:self)
    }

    if let stc = secondsToClose {
      dispatch_after(
        dispatch_time(
          DISPATCH_TIME_NOW,
          Int64(Double(stc) * Double(NSEC_PER_SEC))
        ),
        dispatch_get_main_queue(), {
          CATransaction.begin()
          CATransaction.setValue(kCFBooleanTrue, forKey: kCATransactionDisableActions)
          self.expanded = false
          CATransaction.commit()
      })
    } else {
      self.expanded = false
    }
  }
  
  /**

  /// Will be set to true if the control is animating the snapping
  var isSnapping: Bool = false
  
  /// Flags if snapping was canceled because user re-engaged control
  var canceledSnapping: Bool = false
  
  /// Seconds from the time user lifts touch until the control auto-closes
  let secondsToClose: NSTimeInterval = 0.5
  
  /// Flag to allow the control to keep tracking even if user goes outside the frame
  var allowTrackOutsideControl: Bool = true
