Adjusted validation logic.
This commit is contained in:
parent
44ff5e9d3c
commit
bcddc0b311
@ -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]?) {
|
||||||
|
|||||||
@ -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]?) {
|
||||||
|
|||||||
@ -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 }
|
||||||
|
|
||||||
|
|||||||
@ -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]?) {
|
||||||
|
|||||||
@ -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]?) {
|
||||||
|
|||||||
@ -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()
|
||||||
|
|||||||
@ -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 }
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user