From 21166bc5f0fc51ec57fe7afb1d4d59fa88ecdb28 Mon Sep 17 00:00:00 2001 From: Kevin G Christiano Date: Fri, 22 Nov 2019 09:20:35 -0500 Subject: [PATCH] Better functioning selection. --- .../Atoms/TextFields/DigitEntryField.swift | 64 ++++++++----------- 1 file changed, 27 insertions(+), 37 deletions(-) diff --git a/MVMCoreUI/Atoms/TextFields/DigitEntryField.swift b/MVMCoreUI/Atoms/TextFields/DigitEntryField.swift index 1d355c88..85a9d812 100644 --- a/MVMCoreUI/Atoms/TextFields/DigitEntryField.swift +++ b/MVMCoreUI/Atoms/TextFields/DigitEntryField.swift @@ -22,7 +22,7 @@ import UIKit private var switchFieldsAutomatically = false public var digitBoxes: [DigitBox] = [] - var selectedDigitField: DigitBox? + var selectedDigitBox: DigitBox? //-------------------------------------------------- // MARK: - Computed Properties @@ -273,10 +273,8 @@ import UIKit var selectPreviousField = false - for (index, field) in Array(digitBoxes.reversed()).enumerated() { - - if field.digitField == currentTextField { - field.isSelected = false + for (index, box) in Array(digitBoxes.reversed()).enumerated() { + if box.digitField == currentTextField { if index == digitBoxes.count - 1 { return } else { @@ -284,12 +282,11 @@ import UIKit } } else if selectPreviousField { if !clear { - self.switchFieldsAutomatically = true + switchFieldsAutomatically = true } - field.digitField.becomeFirstResponder() - self.switchFieldsAutomatically = false - field.isSelected = true - UIAccessibility.post(notification: .layoutChanged, argument: field.digitField) + box.digitField.becomeFirstResponder() + switchFieldsAutomatically = false + UIAccessibility.post(notification: .layoutChanged, argument: box.digitField) return } } @@ -299,24 +296,21 @@ import UIKit var selectNextField = false - for (index, field) in digitBoxes.enumerated() { - - if field.digitField == currentTextField { + for (index, box) in digitBoxes.enumerated() { + if box.digitField == currentTextField { if index == digitBoxes.count - 1 { return } else { selectNextField = true - field.isSelected = false } } else if selectNextField { if !clear { - self.switchFieldsAutomatically = true + switchFieldsAutomatically = true } - field.digitField.becomeFirstResponder() - self.switchFieldsAutomatically = false - field.isSelected = true - UIAccessibility.post(notification: .layoutChanged, argument: field.digitField) + box.digitField.becomeFirstResponder() + switchFieldsAutomatically = false + UIAccessibility.post(notification: .layoutChanged, argument: box.digitField) return } } @@ -324,14 +318,14 @@ import UIKit @objc override func startEditing() { - selectedDigitField?.isSelected = true - selectedDigitField?.digitField.becomeFirstResponder() + selectedDigitBox?.isSelected = true + selectedDigitBox?.digitField.becomeFirstResponder() } @objc override open func resignFirstResponder() -> Bool { - selectedDigitField?.digitField.resignFirstResponder() - selectedDigitField?.isSelected = false + selectedDigitBox?.digitField.resignFirstResponder() + selectedDigitBox?.isSelected = false return true } @@ -407,17 +401,12 @@ extension DigitEntryField { textField.text = "" valueChanged() } - - for digitBox in digitBoxes { - - if digitBox.isSelected { - digitBox.isSelected = false - } - - if digitBox.digitField == textField { - selectedDigitField = digitBox - digitBox.isSelected = true - break + + digitBoxes.forEach { + if $0.digitField == textField { + selectedDigitBox = $0 + $0.isSelected = true + return } } @@ -426,9 +415,10 @@ extension DigitEntryField { @objc public func textFieldDidEndEditing(_ textField: UITextField) { - digitBoxes.forEach { box in - if box.digitField == textField { - box.isSelected = false + digitBoxes.forEach { + if $0.digitField == textField { + selectedDigitBox = nil + $0.isSelected = false return } }