From a02560f7e0a5d18e82eadf3f07aac35aaaa5d365 Mon Sep 17 00:00:00 2001 From: DashaGitHub Date: Mon, 11 Mar 2019 11:57:02 +0300 Subject: [PATCH 1/5] Added block call when minimum is reached --- GMStepper/GMStepper.swift | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/GMStepper/GMStepper.swift b/GMStepper/GMStepper.swift index f9e5dce..4a0962f 100644 --- a/GMStepper/GMStepper.swift +++ b/GMStepper/GMStepper.swift @@ -111,6 +111,9 @@ import UIKit /// Label tap closure @objc public var didTouchLabel: ((Double) -> Void)? + + /// Value reached the minimum + @objc public var minimumReached: (() -> Void)? /// Text color of the middle label. Defaults to white. @objc @IBInspectable public var labelTextColor: UIColor = UIColor.white { @@ -528,10 +531,12 @@ private extension GMStepper { func handleIsLimitReached() { let isLimitReached = value == minimumValue + if isLimitReached { + minimumReached?() + } leftButton.alpha = isLimitReached ? leftButtonLimitOpacity : 1 leftButton.isUserInteractionEnabled = !isLimitReached } - } extension Decimal { From dd09a1e0d9245cded6b133b048715971dc6fe18b Mon Sep 17 00:00:00 2001 From: DashaGitHub Date: Mon, 11 Mar 2019 14:37:33 +0300 Subject: [PATCH 2/5] Added block call when minimum is reached. Refactoring --- GMStepper/GMStepper.swift | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/GMStepper/GMStepper.swift b/GMStepper/GMStepper.swift index 4a0962f..81eba04 100644 --- a/GMStepper/GMStepper.swift +++ b/GMStepper/GMStepper.swift @@ -114,7 +114,9 @@ import UIKit /// Value reached the minimum @objc public var minimumReached: (() -> Void)? - + + private var isLimitReached: Bool = false + /// Text color of the middle label. Defaults to white. @objc @IBInspectable public var labelTextColor: UIColor = UIColor.white { didSet { @@ -442,6 +444,9 @@ extension GMStepper { if value == minimumValue { animateLimitHitIfNeeded() + if isLimitReached { + minimumReached?() + } } else { stepperState = .ShouldDecrease animateSlideLeft() @@ -530,12 +535,8 @@ extension GMStepper { private extension GMStepper { func handleIsLimitReached() { - let isLimitReached = value == minimumValue - if isLimitReached { - minimumReached?() - } + isLimitReached = value == minimumValue leftButton.alpha = isLimitReached ? leftButtonLimitOpacity : 1 - leftButton.isUserInteractionEnabled = !isLimitReached } } From 9444b32028bef446f9264f7d9a8084b28027d548 Mon Sep 17 00:00:00 2001 From: DashaGitHub Date: Mon, 11 Mar 2019 14:42:45 +0300 Subject: [PATCH 3/5] Some refactoring --- GMStepper/GMStepper.swift | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/GMStepper/GMStepper.swift b/GMStepper/GMStepper.swift index 81eba04..e9dae46 100644 --- a/GMStepper/GMStepper.swift +++ b/GMStepper/GMStepper.swift @@ -115,8 +115,6 @@ import UIKit /// Value reached the minimum @objc public var minimumReached: (() -> Void)? - private var isLimitReached: Bool = false - /// Text color of the middle label. Defaults to white. @objc @IBInspectable public var labelTextColor: UIColor = UIColor.white { didSet { @@ -183,6 +181,9 @@ import UIKit /// Formatter for displaying the current value let formatter = NumberFormatter() + /// Limit reached flag + private var isLimitReached: Bool = false + /** Width of the sliding animation. When buttons clicked, the middle label does a slide animation towards to the clicked button. Defaults to 5. */ @@ -541,6 +542,7 @@ private extension GMStepper { } extension Decimal { + var significantFractionalDecimalDigits: Int { return max(-exponent, 0) } From f893371f739c6d93c73f7e9f046783ddafd8a0ac Mon Sep 17 00:00:00 2001 From: DashaGitHub Date: Mon, 11 Mar 2019 16:05:15 +0300 Subject: [PATCH 4/5] Some refactoring --- GMStepper/GMStepper.swift | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/GMStepper/GMStepper.swift b/GMStepper/GMStepper.swift index e9dae46..7a73e8c 100644 --- a/GMStepper/GMStepper.swift +++ b/GMStepper/GMStepper.swift @@ -113,7 +113,7 @@ import UIKit @objc public var didTouchLabel: ((Double) -> Void)? /// Value reached the minimum - @objc public var minimumReached: (() -> Void)? + @objc public var minimumExceeded: (() -> Void)? /// Text color of the middle label. Defaults to white. @objc @IBInspectable public var labelTextColor: UIColor = UIColor.white { @@ -181,9 +181,6 @@ import UIKit /// Formatter for displaying the current value let formatter = NumberFormatter() - /// Limit reached flag - private var isLimitReached: Bool = false - /** Width of the sliding animation. When buttons clicked, the middle label does a slide animation towards to the clicked button. Defaults to 5. */ @@ -445,9 +442,7 @@ extension GMStepper { if value == minimumValue { animateLimitHitIfNeeded() - if isLimitReached { - minimumReached?() - } + minimumExceeded?() } else { stepperState = .ShouldDecrease animateSlideLeft() @@ -536,7 +531,7 @@ extension GMStepper { private extension GMStepper { func handleIsLimitReached() { - isLimitReached = value == minimumValue + let isLimitReached = value == minimumValue leftButton.alpha = isLimitReached ? leftButtonLimitOpacity : 1 } } From 810fcbefeaaf0a7d7aac7f2d7996ec549f7fcb6b Mon Sep 17 00:00:00 2001 From: DashaGitHub Date: Mon, 11 Mar 2019 16:10:21 +0300 Subject: [PATCH 5/5] Some refactoring --- GMStepper/GMStepper.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GMStepper/GMStepper.swift b/GMStepper/GMStepper.swift index 7a73e8c..19fa66e 100644 --- a/GMStepper/GMStepper.swift +++ b/GMStepper/GMStepper.swift @@ -112,7 +112,7 @@ import UIKit /// Label tap closure @objc public var didTouchLabel: ((Double) -> Void)? - /// Value reached the minimum + /// Block is called when the minimum is exceeded @objc public var minimumExceeded: (() -> Void)? /// Text color of the middle label. Defaults to white.