Adjusted validation logic.
This commit is contained in:
parent
44ff5e9d3c
commit
bcddc0b311
@ -72,7 +72,7 @@ import UIKit
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Molecular
|
||||
// MARK: - MVMCoreUIMoleculeViewProtocol
|
||||
extension BaseDropdownEntryField {
|
||||
|
||||
@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?) {
|
||||
|
||||
setTextWith(date: datePicker?.date)
|
||||
super.dismissFieldInput(sender)
|
||||
}
|
||||
@ -106,7 +107,7 @@ import UIKit
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Molecular
|
||||
// MARK: - MVMCoreUIMoleculeViewProtocol
|
||||
extension DateDropdownEntryField {
|
||||
|
||||
@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) {
|
||||
super.init(frame: frame)
|
||||
setup()
|
||||
}
|
||||
|
||||
@objc public convenience init() {
|
||||
@ -95,7 +94,8 @@ import UIKit
|
||||
// MARK: - Lifecycle
|
||||
//--------------------------------------------------
|
||||
|
||||
@objc private func setup() {
|
||||
open override func setupView() {
|
||||
super.setupView()
|
||||
|
||||
guard constraints.isEmpty else { return }
|
||||
|
||||
|
||||
@ -31,7 +31,6 @@ import UIKit
|
||||
public override var isEnabled: Bool {
|
||||
get { return super.isEnabled }
|
||||
set (enabled) {
|
||||
titleLabel.textColor = enabled ? .mfBattleshipGrey() : .mfSilver()
|
||||
digitBoxes.forEach { $0.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 let text = text, !text.isEmpty && !showError {
|
||||
feedback = placeholder
|
||||
|
||||
} else if !showError {
|
||||
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") ?? "")
|
||||
}
|
||||
}
|
||||
@ -101,8 +96,6 @@ import UIKit
|
||||
field.digitField.text = String(newValue[indexChar])
|
||||
}
|
||||
}
|
||||
|
||||
valueChanged()
|
||||
}
|
||||
}
|
||||
|
||||
@ -128,9 +121,6 @@ import UIKit
|
||||
|
||||
@objc public override init(frame: CGRect) {
|
||||
super.init(frame: frame)
|
||||
|
||||
isAccessibilityElement = false
|
||||
entryFieldContainer.disableAllBorders = true
|
||||
}
|
||||
|
||||
@objc public convenience init() {
|
||||
@ -156,7 +146,11 @@ import UIKit
|
||||
// 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 {
|
||||
|
||||
@ -304,7 +298,6 @@ import UIKit
|
||||
} else {
|
||||
selectNextField = true
|
||||
}
|
||||
|
||||
} else if selectNextField {
|
||||
if !clear {
|
||||
switchFieldsAutomatically = true
|
||||
@ -325,8 +318,12 @@ import UIKit
|
||||
|
||||
@objc override open func resignFirstResponder() -> Bool {
|
||||
|
||||
selectedDigitBox?.digitField.resignFirstResponder()
|
||||
if validateWhenDoneEditing {
|
||||
validateTextField()
|
||||
}
|
||||
|
||||
selectedDigitBox?.isSelected = false
|
||||
selectedDigitBox?.digitField.resignFirstResponder()
|
||||
return true
|
||||
}
|
||||
|
||||
@ -369,14 +366,12 @@ extension DigitEntryField {
|
||||
|
||||
// One character, switch old value with new, select next textfield
|
||||
textField.text = string
|
||||
valueChanged()
|
||||
selectNextDigitField(textField, clear: false)
|
||||
return false
|
||||
|
||||
} else if replacementLength == 0 && oldLength == 1 {
|
||||
// Non empty cell, clear and stay.
|
||||
textField.text = ""
|
||||
valueChanged()
|
||||
return false
|
||||
}
|
||||
|
||||
@ -388,7 +383,7 @@ extension DigitEntryField {
|
||||
|
||||
@objc func digitFieldDidDelete(_ textField: TextField?) {
|
||||
|
||||
selectPreviousDigitField(textField, clear: true)
|
||||
selectPreviousDigitField(textField, clear: false)
|
||||
}
|
||||
|
||||
@objc public func textFieldDidBeginEditing(_ textField: UITextField) {
|
||||
@ -403,7 +398,6 @@ extension DigitEntryField {
|
||||
|
||||
if !switchFieldsAutomatically {
|
||||
textField.text = ""
|
||||
valueChanged()
|
||||
}
|
||||
|
||||
proprietorTextDelegate?.textFieldDidBeginEditing?(textField)
|
||||
@ -415,12 +409,16 @@ extension DigitEntryField {
|
||||
selectedDigitBox?.isSelected = false
|
||||
selectedDigitBox = nil
|
||||
|
||||
if !switchFieldsAutomatically && validateWhenDoneEditing {
|
||||
validateTextField()
|
||||
}
|
||||
|
||||
proprietorTextDelegate?.textFieldDidEndEditing?(textField)
|
||||
}
|
||||
|
||||
@objc public func textFieldShouldClear(_ textField: UITextField) -> Bool {
|
||||
|
||||
selectPreviousDigitField(textField, clear: false)
|
||||
selectPreviousDigitField(textField, clear: true)
|
||||
|
||||
return proprietorTextDelegate?.textFieldShouldClear?(textField) ?? true
|
||||
}
|
||||
@ -436,7 +434,7 @@ extension DigitEntryField {
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Molecular
|
||||
// MARK: - MVMCoreUIMoleculeViewProtocol
|
||||
extension DigitEntryField {
|
||||
|
||||
@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) {
|
||||
super.init(frame: frame)
|
||||
setup()
|
||||
}
|
||||
|
||||
@objc public convenience init() {
|
||||
@ -53,8 +52,9 @@ open class ItemDropdownEntryField: BaseDropdownEntryField {
|
||||
//--------------------------------------------------
|
||||
// MARK: - Methods
|
||||
//--------------------------------------------------
|
||||
|
||||
@objc private func setup() {
|
||||
|
||||
@objc open override func setupFieldContainerContent(_ container: UIView) {
|
||||
super.setupFieldContainerContent(container)
|
||||
|
||||
pickerView = MVMCoreUICommonViewsUtility.addPicker(to: textField, delegate: self)
|
||||
textField.hideBlinkingCaret = true
|
||||
@ -115,7 +115,7 @@ extension ItemDropdownEntryField: UIPickerViewDelegate, UIPickerViewDataSource {
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Molecular
|
||||
// MARK: - MVMCoreUIMoleculeViewProtocol
|
||||
extension ItemDropdownEntryField {
|
||||
|
||||
@objc override open func setWithJSON(_ json: [AnyHashable: Any]?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable: Any]?) {
|
||||
|
||||
@ -147,7 +147,7 @@ import MVMCore
|
||||
}
|
||||
|
||||
text = unformattedMDN
|
||||
_ = textFieldShouldReturn(textField)
|
||||
textFieldShouldReturn(textField)
|
||||
textFieldDidEndEditing(textField)
|
||||
}
|
||||
}
|
||||
@ -156,6 +156,7 @@ import MVMCore
|
||||
// MARK: - Implemented TextField Delegate
|
||||
//--------------------------------------------------
|
||||
|
||||
@discardableResult
|
||||
@objc public func textFieldShouldReturn(_ textField: UITextField) -> Bool {
|
||||
|
||||
textField.resignFirstResponder()
|
||||
|
||||
@ -228,7 +228,8 @@ import UIKit
|
||||
showError = true
|
||||
observingTextFieldDelegate?.isInvalid?(textfield: self)
|
||||
|
||||
} else if isValid {
|
||||
} else {
|
||||
showError = false
|
||||
observingTextFieldDelegate?.isValid?(textfield: self)
|
||||
}
|
||||
|
||||
@ -242,7 +243,7 @@ import UIKit
|
||||
textField.becomeFirstResponder()
|
||||
}
|
||||
|
||||
/// Executes on UITextField.textDidChangeNotification (every character entry)
|
||||
/// Executes on UITextField.textDidChangeNotification (each character entry)
|
||||
@objc func valueChanged() {
|
||||
|
||||
guard validateEachCharacter else { return }
|
||||
|
||||
Loading…
Reference in New Issue
Block a user