     /// Increments the stepper `value` by `incrementStepValue`.
     public func incrementValue() {
         switch value + incrementStepValue {
+        // The `value` is wrapped.
         case let x where wraps && x > maximumValue:
             value = minimumValue
+        // The `value` is incremented.
         case let x where x <= maximumValue:
             value = x
+            delegate?.KWStepperDidIncrement?()
+            incrementCallback?(self)
+        // The `value` is clamped.
         default:
             endLongPress()
             delegate?.KWStepperMaxValueClamped?()


    // MARK: - Callbacks

    /// Executed when `value` is changed.
    public var valueChangedCallback: (KWStepper -> Void)?

    /// Executed when `value` is decremented.
    public var decrementCallback: (KWStepper -> Void)?

    /// Executed when `value` is incremented.
    public var incrementCallback: (KWStepper -> Void)?

    /// Executed when `value` is clamped to `maximumValue`.
    public var maxValueClampedCallback: (KWStepper -> Void)?

    /// Executed when `value` is clamped to `minimumValue`.
    public var minValueClampedCallback: (KWStepper -> Void)?

    // MARK: - Private Variables

    /// Decrements the stepper `value` by `decrementStepValue`.
    public func decrementValue() {
        switch value - decrementStepValue {
        // The `value` is wrapped.
        case let x where wraps && x < minimumValue:
            value = maximumValue
        // The `value` is decremented.
        case let x where x >= minimumValue:
            value = x
            delegate?.KWStepperDidDecrement?()
            decrementCallback?(self)
        // The `value` is clamped.
        default:
            endLongPress()
            delegate?.KWStepperMinValueClamped?()
