Better functioning selection.
This commit is contained in:
parent
64bda3cb1d
commit
21166bc5f0
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user