Better functioning selection.

This commit is contained in:
Kevin G Christiano 2019-11-22 09:20:35 -05:00
parent 64bda3cb1d
commit 21166bc5f0

View File

@ -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
}
}