Adjusted validation logic.

This commit is contained in:
Kevin G Christiano 2019-12-16 08:53:45 -05:00
parent 44ff5e9d3c
commit bcddc0b311
7 changed files with 32 additions and 31 deletions

View File

@ -72,7 +72,7 @@ import UIKit
} }
} }
// MARK: - Molecular // MARK: - MVMCoreUIMoleculeViewProtocol
extension BaseDropdownEntryField { extension BaseDropdownEntryField {
@objc override open func setWithJSON(_ json: [AnyHashable: Any]?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable: Any]?) { @objc override open func setWithJSON(_ json: [AnyHashable: Any]?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable: Any]?) {

View File

@ -96,6 +96,7 @@ import UIKit
} }
@objc override func dismissFieldInput(_ sender: Any?) { @objc override func dismissFieldInput(_ sender: Any?) {
setTextWith(date: datePicker?.date) setTextWith(date: datePicker?.date)
super.dismissFieldInput(sender) super.dismissFieldInput(sender)
} }
@ -106,7 +107,7 @@ import UIKit
} }
} }
// MARK: - Molecular // MARK: - MVMCoreUIMoleculeViewProtocol
extension DateDropdownEntryField { extension DateDropdownEntryField {
@objc override open func setWithJSON(_ json: [AnyHashable: Any]?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable: Any]?) { @objc override open func setWithJSON(_ json: [AnyHashable: Any]?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable: Any]?) {

View File

@ -79,7 +79,6 @@ import UIKit
@objc public override init(frame: CGRect) { @objc public override init(frame: CGRect) {
super.init(frame: frame) super.init(frame: frame)
setup()
} }
@objc public convenience init() { @objc public convenience init() {
@ -95,7 +94,8 @@ import UIKit
// MARK: - Lifecycle // MARK: - Lifecycle
//-------------------------------------------------- //--------------------------------------------------
@objc private func setup() { open override func setupView() {
super.setupView()
guard constraints.isEmpty else { return } guard constraints.isEmpty else { return }

View File

@ -31,7 +31,6 @@ import UIKit
public override var isEnabled: Bool { public override var isEnabled: Bool {
get { return super.isEnabled } get { return super.isEnabled }
set (enabled) { set (enabled) {
titleLabel.textColor = enabled ? .mfBattleshipGrey() : .mfSilver()
digitBoxes.forEach { $0.isEnabled = enabled } digitBoxes.forEach { $0.isEnabled = enabled }
super.isEnabled = enabled super.isEnabled = enabled
} }
@ -72,15 +71,11 @@ import UIKit
// If there is already text in the textfield, set the placeholder label below. // If there is already text in the textfield, set the placeholder label below.
if let text = text, !text.isEmpty && !showError { if let text = text, !text.isEmpty && !showError {
feedback = placeholder feedback = placeholder
} else if !showError { } else if !showError {
feedback = "" feedback = ""
} }
/*
* adding missing accessibilityLabel value
* if we have some value in accessibilityLabel,
* then only can append regular and picker item
*/
textField.accessibilityLabel = newValue + (MVMCoreUIUtility.hardcodedString(withKey: "mfdigittextfield_regular") ?? "") textField.accessibilityLabel = newValue + (MVMCoreUIUtility.hardcodedString(withKey: "mfdigittextfield_regular") ?? "")
} }
} }
@ -101,8 +96,6 @@ import UIKit
field.digitField.text = String(newValue[indexChar]) field.digitField.text = String(newValue[indexChar])
} }
} }
valueChanged()
} }
} }
@ -128,9 +121,6 @@ import UIKit
@objc public override init(frame: CGRect) { @objc public override init(frame: CGRect) {
super.init(frame: frame) super.init(frame: frame)
isAccessibilityElement = false
entryFieldContainer.disableAllBorders = true
} }
@objc public convenience init() { @objc public convenience init() {
@ -156,7 +146,11 @@ import UIKit
// MARK: - Setup // MARK: - Setup
//-------------------------------------------------- //--------------------------------------------------
@objc public override func setupFieldContainerContent(_ container: UIView) {} @objc public override func setupFieldContainerContent(_ container: UIView) {
isAccessibilityElement = false
entryFieldContainer.disableAllBorders = true
}
@objc private func createDigitField() -> DigitBox { @objc private func createDigitField() -> DigitBox {
@ -304,7 +298,6 @@ import UIKit
} else { } else {
selectNextField = true selectNextField = true
} }
} else if selectNextField { } else if selectNextField {
if !clear { if !clear {
switchFieldsAutomatically = true switchFieldsAutomatically = true
@ -325,8 +318,12 @@ import UIKit
@objc override open func resignFirstResponder() -> Bool { @objc override open func resignFirstResponder() -> Bool {
selectedDigitBox?.digitField.resignFirstResponder() if validateWhenDoneEditing {
validateTextField()
}
selectedDigitBox?.isSelected = false selectedDigitBox?.isSelected = false
selectedDigitBox?.digitField.resignFirstResponder()
return true return true
} }
@ -369,14 +366,12 @@ extension DigitEntryField {
// One character, switch old value with new, select next textfield // One character, switch old value with new, select next textfield
textField.text = string textField.text = string
valueChanged()
selectNextDigitField(textField, clear: false) selectNextDigitField(textField, clear: false)
return false return false
} else if replacementLength == 0 && oldLength == 1 { } else if replacementLength == 0 && oldLength == 1 {
// Non empty cell, clear and stay. // Non empty cell, clear and stay.
textField.text = "" textField.text = ""
valueChanged()
return false return false
} }
@ -388,7 +383,7 @@ extension DigitEntryField {
@objc func digitFieldDidDelete(_ textField: TextField?) { @objc func digitFieldDidDelete(_ textField: TextField?) {
selectPreviousDigitField(textField, clear: true) selectPreviousDigitField(textField, clear: false)
} }
@objc public func textFieldDidBeginEditing(_ textField: UITextField) { @objc public func textFieldDidBeginEditing(_ textField: UITextField) {
@ -403,7 +398,6 @@ extension DigitEntryField {
if !switchFieldsAutomatically { if !switchFieldsAutomatically {
textField.text = "" textField.text = ""
valueChanged()
} }
proprietorTextDelegate?.textFieldDidBeginEditing?(textField) proprietorTextDelegate?.textFieldDidBeginEditing?(textField)
@ -415,12 +409,16 @@ extension DigitEntryField {
selectedDigitBox?.isSelected = false selectedDigitBox?.isSelected = false
selectedDigitBox = nil selectedDigitBox = nil
if !switchFieldsAutomatically && validateWhenDoneEditing {
validateTextField()
}
proprietorTextDelegate?.textFieldDidEndEditing?(textField) proprietorTextDelegate?.textFieldDidEndEditing?(textField)
} }
@objc public func textFieldShouldClear(_ textField: UITextField) -> Bool { @objc public func textFieldShouldClear(_ textField: UITextField) -> Bool {
selectPreviousDigitField(textField, clear: false) selectPreviousDigitField(textField, clear: true)
return proprietorTextDelegate?.textFieldShouldClear?(textField) ?? true return proprietorTextDelegate?.textFieldShouldClear?(textField) ?? true
} }
@ -436,7 +434,7 @@ extension DigitEntryField {
} }
} }
// MARK: - Molecular // MARK: - MVMCoreUIMoleculeViewProtocol
extension DigitEntryField { extension DigitEntryField {
@objc open override func setWithJSON(_ json: [AnyHashable: Any]?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable: Any]?) { @objc open override func setWithJSON(_ json: [AnyHashable: Any]?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable: Any]?) {

View File

@ -34,7 +34,6 @@ open class ItemDropdownEntryField: BaseDropdownEntryField {
@objc public override init(frame: CGRect) { @objc public override init(frame: CGRect) {
super.init(frame: frame) super.init(frame: frame)
setup()
} }
@objc public convenience init() { @objc public convenience init() {
@ -53,8 +52,9 @@ open class ItemDropdownEntryField: BaseDropdownEntryField {
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Methods // MARK: - Methods
//-------------------------------------------------- //--------------------------------------------------
@objc private func setup() { @objc open override func setupFieldContainerContent(_ container: UIView) {
super.setupFieldContainerContent(container)
pickerView = MVMCoreUICommonViewsUtility.addPicker(to: textField, delegate: self) pickerView = MVMCoreUICommonViewsUtility.addPicker(to: textField, delegate: self)
textField.hideBlinkingCaret = true textField.hideBlinkingCaret = true
@ -115,7 +115,7 @@ extension ItemDropdownEntryField: UIPickerViewDelegate, UIPickerViewDataSource {
} }
} }
// MARK: - Molecular // MARK: - MVMCoreUIMoleculeViewProtocol
extension ItemDropdownEntryField { extension ItemDropdownEntryField {
@objc override open func setWithJSON(_ json: [AnyHashable: Any]?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable: Any]?) { @objc override open func setWithJSON(_ json: [AnyHashable: Any]?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable: Any]?) {

View File

@ -147,7 +147,7 @@ import MVMCore
} }
text = unformattedMDN text = unformattedMDN
_ = textFieldShouldReturn(textField) textFieldShouldReturn(textField)
textFieldDidEndEditing(textField) textFieldDidEndEditing(textField)
} }
} }
@ -156,6 +156,7 @@ import MVMCore
// MARK: - Implemented TextField Delegate // MARK: - Implemented TextField Delegate
//-------------------------------------------------- //--------------------------------------------------
@discardableResult
@objc public func textFieldShouldReturn(_ textField: UITextField) -> Bool { @objc public func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder() textField.resignFirstResponder()

View File

@ -228,7 +228,8 @@ import UIKit
showError = true showError = true
observingTextFieldDelegate?.isInvalid?(textfield: self) observingTextFieldDelegate?.isInvalid?(textfield: self)
} else if isValid { } else {
showError = false
observingTextFieldDelegate?.isValid?(textfield: self) observingTextFieldDelegate?.isValid?(textfield: self)
} }
@ -242,7 +243,7 @@ import UIKit
textField.becomeFirstResponder() textField.becomeFirstResponder()
} }
/// Executes on UITextField.textDidChangeNotification (every character entry) /// Executes on UITextField.textDidChangeNotification (each character entry)
@objc func valueChanged() { @objc func valueChanged() {
guard validateEachCharacter else { return } guard validateEachCharacter else { return }