latestst state.

This commit is contained in:
Kevin G Christiano 2019-11-22 12:53:40 -05:00
parent 21166bc5f0
commit 72553935c2
7 changed files with 73 additions and 111 deletions

View File

@ -45,7 +45,7 @@
0A6BF4722360C56C0028F841 /* BaseDropdownEntryField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A6BF4712360C56C0028F841 /* BaseDropdownEntryField.swift */; }; 0A6BF4722360C56C0028F841 /* BaseDropdownEntryField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A6BF4712360C56C0028F841 /* BaseDropdownEntryField.swift */; };
0A7BAD74232A8DC700FB8E22 /* HeadlineBodyButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A7BAD73232A8DC700FB8E22 /* HeadlineBodyButton.swift */; }; 0A7BAD74232A8DC700FB8E22 /* HeadlineBodyButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A7BAD73232A8DC700FB8E22 /* HeadlineBodyButton.swift */; };
0A7BAFA1232BE61800FB8E22 /* Checkbox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A7BAFA0232BE61800FB8E22 /* Checkbox.swift */; }; 0A7BAFA1232BE61800FB8E22 /* Checkbox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A7BAFA0232BE61800FB8E22 /* Checkbox.swift */; };
0ABD136B237B193A0081388D /* FormFieldContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ABD136A237B193A0081388D /* FormFieldContainer.swift */; }; 0ABD136B237B193A0081388D /* EntryFieldContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ABD136A237B193A0081388D /* EntryFieldContainer.swift */; };
0ABD136D237CAD1E0081388D /* DateDropdownEntryField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ABD136C237CAD1E0081388D /* DateDropdownEntryField.swift */; }; 0ABD136D237CAD1E0081388D /* DateDropdownEntryField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ABD136C237CAD1E0081388D /* DateDropdownEntryField.swift */; };
0ABD1371237DB0450081388D /* ItemDropdownEntryField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ABD1370237DB0450081388D /* ItemDropdownEntryField.swift */; }; 0ABD1371237DB0450081388D /* ItemDropdownEntryField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ABD1370237DB0450081388D /* ItemDropdownEntryField.swift */; };
0AE14F64238315D2005417F8 /* TextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AE14F63238315D2005417F8 /* TextField.swift */; }; 0AE14F64238315D2005417F8 /* TextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AE14F63238315D2005417F8 /* TextField.swift */; };
@ -240,7 +240,7 @@
0A7BAFA0232BE61800FB8E22 /* Checkbox.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Checkbox.swift; sourceTree = "<group>"; }; 0A7BAFA0232BE61800FB8E22 /* Checkbox.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Checkbox.swift; sourceTree = "<group>"; };
0A7BAFA2232BE63400FB8E22 /* CheckboxWithLabelView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheckboxWithLabelView.swift; sourceTree = "<group>"; }; 0A7BAFA2232BE63400FB8E22 /* CheckboxWithLabelView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheckboxWithLabelView.swift; sourceTree = "<group>"; };
0A8321AE2355FE9500CB7F00 /* DigitBox.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DigitBox.swift; sourceTree = "<group>"; }; 0A8321AE2355FE9500CB7F00 /* DigitBox.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DigitBox.swift; sourceTree = "<group>"; };
0ABD136A237B193A0081388D /* FormFieldContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FormFieldContainer.swift; sourceTree = "<group>"; }; 0ABD136A237B193A0081388D /* EntryFieldContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EntryFieldContainer.swift; sourceTree = "<group>"; };
0ABD136C237CAD1E0081388D /* DateDropdownEntryField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DateDropdownEntryField.swift; sourceTree = "<group>"; }; 0ABD136C237CAD1E0081388D /* DateDropdownEntryField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DateDropdownEntryField.swift; sourceTree = "<group>"; };
0ABD1370237DB0450081388D /* ItemDropdownEntryField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemDropdownEntryField.swift; sourceTree = "<group>"; }; 0ABD1370237DB0450081388D /* ItemDropdownEntryField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemDropdownEntryField.swift; sourceTree = "<group>"; };
0AE14F63238315D2005417F8 /* TextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextField.swift; sourceTree = "<group>"; }; 0AE14F63238315D2005417F8 /* TextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextField.swift; sourceTree = "<group>"; };
@ -451,7 +451,7 @@
0ABD1369237B18EE0081388D /* views */ = { 0ABD1369237B18EE0081388D /* views */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
0ABD136A237B193A0081388D /* FormFieldContainer.swift */, 0ABD136A237B193A0081388D /* EntryFieldContainer.swift */,
); );
path = views; path = views;
sourceTree = "<group>"; sourceTree = "<group>";
@ -1139,7 +1139,6 @@
01509D952327ED1900EF99AA /* HeadlineBodyTextButtonSwitch.swift in Sources */, 01509D952327ED1900EF99AA /* HeadlineBodyTextButtonSwitch.swift in Sources */,
D29DF13021E6851E003B2FB9 /* MVMCoreUITopAlertShortView.m in Sources */, D29DF13021E6851E003B2FB9 /* MVMCoreUITopAlertShortView.m in Sources */,
0ABD136D237CAD1E0081388D /* DateDropdownEntryField.swift in Sources */, 0ABD136D237CAD1E0081388D /* DateDropdownEntryField.swift in Sources */,
D28B4F8B21FF967C00712C7A /* MVMCoreUIObject.m in Sources */,
0A1B4A96233BB18F005B3FB4 /* CheckboxWithLabelView.swift in Sources */, 0A1B4A96233BB18F005B3FB4 /* CheckboxWithLabelView.swift in Sources */,
0A21DB8B235E06EF00C160A2 /* MFDigitTextBox.m in Sources */, 0A21DB8B235E06EF00C160A2 /* MFDigitTextBox.m in Sources */,
D260D7B222D65BDD007E7233 /* MVMCoreUIPageControl.m in Sources */, D260D7B222D65BDD007E7233 /* MVMCoreUIPageControl.m in Sources */,
@ -1209,7 +1208,7 @@
0A1214A022C11A18007C7030 /* ActionDetailWithImage.swift in Sources */, 0A1214A022C11A18007C7030 /* ActionDetailWithImage.swift in Sources */,
D2B18B922361E65A00A9AEDC /* CoreUIObject.swift in Sources */, D2B18B922361E65A00A9AEDC /* CoreUIObject.swift in Sources */,
D29DF2BE21E7BEA4003B2FB9 /* TopTabbar.m in Sources */, D29DF2BE21E7BEA4003B2FB9 /* TopTabbar.m in Sources */,
0ABD136B237B193A0081388D /* FormFieldContainer.swift in Sources */, 0ABD136B237B193A0081388D /* EntryFieldContainer.swift in Sources */,
D2A514632213643100345BFB /* MoleculeStackCenteredTemplate.swift in Sources */, D2A514632213643100345BFB /* MoleculeStackCenteredTemplate.swift in Sources */,
D29DF32421ED0DA2003B2FB9 /* TextButtonView.m in Sources */, D29DF32421ED0DA2003B2FB9 /* TextButtonView.m in Sources */,
D29DF29E21E7AE3B003B2FB9 /* MFStyler.m in Sources */, D29DF29E21E7AE3B003B2FB9 /* MFStyler.m in Sources */,

View File

@ -9,11 +9,11 @@
import UIKit import UIKit
@objc protocol DigitBoxProtocol { @objc protocol DigitBoxProtocol {
@objc optional func digitFieldDidDelete(_ textField: UITextField?) @objc optional func digitFieldDidDelete(_ textField: TextField?)
} }
@objcMembers open class DigitBox: FormFieldContainer, UITextFieldDelegate, TextFieldDidDeleteProtocol { @objcMembers open class DigitBox: EntryFieldContainer, UITextFieldDelegate, TextFieldDidDeleteProtocol {
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Outlets // MARK: - Outlets
//-------------------------------------------------- //--------------------------------------------------
@ -29,7 +29,7 @@ import UIKit
}() }()
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Properties // MARK: - Stored Properties
//-------------------------------------------------- //--------------------------------------------------
private var previousSize: CGFloat = 0.0 private var previousSize: CGFloat = 0.0

View File

@ -57,7 +57,6 @@ import UIKit
get { get {
var string = "" var string = ""
digitBoxes.forEach { string += $0.digitField.attributedPlaceholder?.string ?? "" } digitBoxes.forEach { string += $0.digitField.attributedPlaceholder?.string ?? "" }
return !string.isEmpty ? string : nil return !string.isEmpty ? string : nil
} }
set { set {
@ -92,7 +91,6 @@ import UIKit
get { get {
var string = "" var string = ""
digitBoxes.forEach { string += $0.digitField.text ?? "" } digitBoxes.forEach { string += $0.digitField.text ?? "" }
return string return string
} }
set { set {
@ -133,17 +131,21 @@ import UIKit
super.init(frame: frame) super.init(frame: frame)
isAccessibilityElement = false isAccessibilityElement = false
entryContainer.disableAllBorders = true entryFieldContainer.disableAllBorders = true
} }
@objc public convenience init() { @objc public convenience init() {
self.init(frame: .zero) self.init(frame: .zero)
} }
@objc public convenience init(numberOfDigits: Int) { @objc public convenience init(numberOfDigits: Int, secureDigits: Bool = false) {
self.init(frame: .zero) self.init(frame: .zero)
self.numberOfDigits = numberOfDigits self.numberOfDigits = numberOfDigits
assembleDigitFieldsView(size: MVMCoreUISplitViewController.getDetailViewWidth()) assembleDigitFieldsView(size: MVMCoreUISplitViewController.getDetailViewWidth())
if secureDigits {
setAsSecureTextEntry(true)
}
} }
@objc required public init?(coder: NSCoder) { @objc required public init?(coder: NSCoder) {
@ -187,17 +189,17 @@ import UIKit
for (index, box) in digitBoxes.enumerated() { for (index, box) in digitBoxes.enumerated() {
accessibleElements.append(box) accessibleElements.append(box)
entryContainer.addSubview(box) entryFieldContainer.addSubview(box)
box.topAnchor.constraint(equalTo: entryContainer.topAnchor).isActive = true box.topAnchor.constraint(equalTo: entryFieldContainer.topAnchor).isActive = true
entryContainer.bottomAnchor.constraint(equalTo: box.bottomAnchor).isActive = true entryFieldContainer.bottomAnchor.constraint(equalTo: box.bottomAnchor).isActive = true
if index == 0 { if index == 0 {
box.leadingAnchor.constraint(equalTo: entryContainer.leadingAnchor).isActive = true box.leadingAnchor.constraint(equalTo: entryFieldContainer.leadingAnchor).isActive = true
} else if index == digitBoxes.count - 1 { } else if index == digitBoxes.count - 1 {
box.leadingAnchor.constraint(equalTo: prevBox!.trailingAnchor, constant: space).isActive = true box.leadingAnchor.constraint(equalTo: prevBox!.trailingAnchor, constant: space).isActive = true
entryContainer.trailingAnchor.constraint(greaterThanOrEqualTo: box.trailingAnchor).isActive = true entryFieldContainer.trailingAnchor.constraint(greaterThanOrEqualTo: box.trailingAnchor).isActive = true
} else { } else {
box.leadingAnchor.constraint(equalTo: prevBox!.trailingAnchor, constant: space).isActive = true box.leadingAnchor.constraint(equalTo: prevBox!.trailingAnchor, constant: space).isActive = true
@ -217,7 +219,7 @@ import UIKit
@objc open override func updateView(_ size: CGFloat) { @objc open override func updateView(_ size: CGFloat) {
super.updateView(size) super.updateView(size)
entryContainer.disableAllBorders = true entryFieldContainer.disableAllBorders = true
DispatchQueue.main.async { [weak self] in DispatchQueue.main.async { [weak self] in
guard let self = self else { return } guard let self = self else { return }
@ -232,7 +234,7 @@ import UIKit
@objc open override func reset() { @objc open override func reset() {
super.reset() super.reset()
resetDigitBoxes() resetDigitBoxes()
} }
@ -315,7 +317,7 @@ import UIKit
} }
} }
} }
@objc override func startEditing() { @objc override func startEditing() {
selectedDigitBox?.isSelected = true selectedDigitBox?.isSelected = true
@ -390,7 +392,7 @@ extension DigitEntryField {
return false return false
} }
@objc func digitFieldDidDelete(_ textField: UITextField?) { @objc func digitFieldDidDelete(_ textField: TextField?) {
selectPreviousDigitField(textField, clear: true) selectPreviousDigitField(textField, clear: true)
} }
@ -459,6 +461,10 @@ extension DigitEntryField {
assembleDigitFieldsView(size: MVMCoreUIUtility.getWidth()) assembleDigitFieldsView(size: MVMCoreUIUtility.getWidth())
if let _ = dictionary["secureEntry"] as? Bool {
setAsSecureTextEntry(true)
}
if !dictionary.isEmpty{ if !dictionary.isEmpty{
for digitBox in digitBoxes { for digitBox in digitBoxes {
MVMCoreUICommonViewsUtility.addDismissToolbar(digitBox.digitField, delegate: delegateObject as? UITextFieldDelegate) MVMCoreUICommonViewsUtility.addDismissToolbar(digitBox.digitField, delegate: delegateObject as? UITextFieldDelegate)

View File

@ -26,10 +26,7 @@ import UIKit
return label return label
}() }()
public private(set) var entryContainer: FormFieldContainer = { public private(set) var entryFieldContainer = EntryFieldContainer()
let view = FormFieldContainer()
return view
}()
public private(set) var feedbackLabel: Label = { public private(set) var feedbackLabel: Label = {
let label = Label() let label = Label()
@ -57,29 +54,18 @@ import UIKit
/// Determines whther the feedback label will clear itself after user interaction or display update. /// Determines whther the feedback label will clear itself after user interaction or display update.
// public var fixedFeedback: Bool = false // public var fixedFeedback: Bool = false
private var _isEnabled: Bool = true
private var _showError: Bool = false
private var _isLocked: Bool = false
private var _isSelected: Bool = false
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Computed Properties // MARK: - Computed Properties
//-------------------------------------------------- //--------------------------------------------------
/// Toggles enabled (original) or disabled UI. /// Toggles enabled (original) or disabled UI.
public var isEnabled: Bool { public var isEnabled: Bool {
get { return _isEnabled } get { return entryFieldContainer.isEnabled }
set (enabled) { set (enabled) {
_isEnabled = enabled
_isLocked = false
_isSelected = false
_showError = false
DispatchQueue.main.async { [weak self] in DispatchQueue.main.async { [weak self] in
guard let self = self else { return } guard let self = self else { return }
self.entryContainer.isEnabled = enabled self.entryFieldContainer.isEnabled = enabled
self.feedbackLabel.textColor = enabled ? .black : .mfSilver() self.feedbackLabel.textColor = enabled ? .black : .mfSilver()
self.titleLabel.textColor = enabled ? .mfBattleshipGrey() : .mfSilver() self.titleLabel.textColor = enabled ? .mfBattleshipGrey() : .mfSilver()
} }
@ -88,18 +74,12 @@ import UIKit
/// Toggles error or original UI. /// Toggles error or original UI.
public var showError: Bool { public var showError: Bool {
get { return _showError } get { return entryFieldContainer.showError }
set (error) { set (error) {
_showError = error
_isLocked = false
_isSelected = false
_isEnabled = true
DispatchQueue.main.async { [weak self] in DispatchQueue.main.async { [weak self] in
guard let self = self else { return } guard let self = self else { return }
self.entryContainer.showError = error self.entryFieldContainer.showError = error
self.feedback = error ? self.errorMessage : nil self.feedback = error ? self.errorMessage : nil
} }
} }
@ -107,44 +87,28 @@ import UIKit
/// Toggles original or locked UI. /// Toggles original or locked UI.
public var isLocked: Bool { public var isLocked: Bool {
get { return _isLocked } get { return entryFieldContainer.isLocked }
set (locked) { set (locked) {
_isLocked = locked
_isEnabled = true
_isSelected = false
_showError = false
DispatchQueue.main.async { [weak self] in DispatchQueue.main.async { [weak self] in
guard let self = self else { return } guard let self = self else { return }
self.entryContainer.isLocked = locked self.entryFieldContainer.isLocked = locked
} }
} }
} }
/// Toggles selected or original (unselected) UI. /// Toggles selected or original (unselected) UI.
public var isSelected: Bool { public var isSelected: Bool {
get { return _isSelected } get { return entryFieldContainer.isSelected }
set (selected) { set (selected) {
_isSelected = selected
_isLocked = false
_isEnabled = true
_showError = false
DispatchQueue.main.async { [weak self] in DispatchQueue.main.async { [weak self] in
guard let self = self else { return } guard let self = self else { return }
self.entryContainer.isSelected = selected self.entryFieldContainer.isSelected = selected
} }
} }
} }
//--------------------------------------------------
// MARK: - Computed Properties for Outlets
//--------------------------------------------------
/// Sets the text of titleLabel /// Sets the text of titleLabel
public var title: String? { public var title: String? {
get { return titleLabel.text } get { return titleLabel.text }
@ -157,7 +121,7 @@ import UIKit
/// Override this to conveniently get/set the textfield(s). /// Override this to conveniently get/set the textfield(s).
public var text: String? { public var text: String? {
get { return nil } get { return nil }
set { fatalError("You need to override EntryField's 'text' variable in your subclass.") } set { fatalError("You MUST override EntryField's 'text' variable in your subclass.") }
} }
/// Sets feedback text in the textField. /// Sets feedback text in the textField.
@ -166,7 +130,7 @@ import UIKit
set (newFeedback) { set (newFeedback) {
feedbackLabel.text = newFeedback feedbackLabel.text = newFeedback
setAccessibilityString(newFeedback) setAccessibilityString(newFeedback)
entryContainer.refreshUI() entryFieldContainer.refreshUI()
} }
} }
@ -174,8 +138,8 @@ import UIKit
// MARK: - Constraints // MARK: - Constraints
//-------------------------------------------------- //--------------------------------------------------
public var entryContainerLeading: NSLayoutConstraint? public var entryFieldContainerLeading: NSLayoutConstraint?
public var entryContainerTrailing: NSLayoutConstraint? public var entryFieldContainerTrailing: NSLayoutConstraint?
public var feedbackLabelTrailing: NSLayoutConstraint? public var feedbackLabelTrailing: NSLayoutConstraint?
public var feedbackLabelLeading: NSLayoutConstraint? public var feedbackLabelLeading: NSLayoutConstraint?
@ -233,19 +197,19 @@ import UIKit
titleLabelTrailing = layoutMarginsGuide.trailingAnchor.constraint(equalTo: titleLabel.trailingAnchor) titleLabelTrailing = layoutMarginsGuide.trailingAnchor.constraint(equalTo: titleLabel.trailingAnchor)
titleLabelLeading?.isActive = true titleLabelLeading?.isActive = true
addSubview(entryContainer) addSubview(entryFieldContainer)
setupFieldContainerContent(entryContainer) setupFieldContainerContent(entryFieldContainer)
titleContainerDistance = entryContainer.topAnchor.constraint(equalTo: titleLabel.bottomAnchor, constant: 4) titleContainerDistance = entryFieldContainer.topAnchor.constraint(equalTo: titleLabel.bottomAnchor, constant: 4)
titleContainerDistance?.isActive = true titleContainerDistance?.isActive = true
entryContainerLeading = entryContainer.leadingAnchor.constraint(equalTo: layoutMarginsGuide.leadingAnchor) entryFieldContainerLeading = entryFieldContainer.leadingAnchor.constraint(equalTo: layoutMarginsGuide.leadingAnchor)
entryContainerLeading?.isActive = true entryFieldContainerLeading?.isActive = true
entryContainerTrailing = layoutMarginsGuide.trailingAnchor.constraint(equalTo: entryContainer.trailingAnchor) entryFieldContainerTrailing = layoutMarginsGuide.trailingAnchor.constraint(equalTo: entryFieldContainer.trailingAnchor)
entryContainerTrailing?.isActive = true entryFieldContainerTrailing?.isActive = true
addSubview(feedbackLabel) addSubview(feedbackLabel)
feedbackContainerDistance = feedbackLabel.topAnchor.constraint(equalTo: entryContainer.bottomAnchor, constant: PaddingOne) feedbackContainerDistance = feedbackLabel.topAnchor.constraint(equalTo: entryFieldContainer.bottomAnchor, constant: PaddingOne)
feedbackContainerDistance?.isActive = true feedbackContainerDistance?.isActive = true
feedbackLabelLeading = feedbackLabel.leadingAnchor.constraint(equalTo: layoutMarginsGuide.leadingAnchor) feedbackLabelLeading = feedbackLabel.leadingAnchor.constraint(equalTo: layoutMarginsGuide.leadingAnchor)
feedbackLabelLeading?.isActive = true feedbackLabelLeading?.isActive = true
@ -257,11 +221,11 @@ import UIKit
@objc open override func layoutSubviews() { @objc open override func layoutSubviews() {
super.layoutSubviews() super.layoutSubviews()
entryContainer.refreshUI() entryFieldContainer.refreshUI()
} }
/// Method to override. /// Method to override.
/// Intended to add the interactive content (i.e. textField) to the entryContainer. /// Intended to add the interactive content (i.e. textField) to the entryFieldContainer.
@objc open func setupFieldContainerContent(_ container: UIView) { @objc open func setupFieldContainerContent(_ container: UIView) {
// To be overridden by subclass. // To be overridden by subclass.
} }
@ -271,21 +235,16 @@ import UIKit
titleLabel.updateView(size) titleLabel.updateView(size)
feedbackLabel.updateView(size) feedbackLabel.updateView(size)
entryContainer.updateView(size) entryFieldContainer.updateView(size)
} }
@objc open override func reset() { @objc open override func reset() {
super.reset() super.reset()
isEnabled = true
_isLocked = false
_isSelected = false
_showError = false
backgroundColor = .clear backgroundColor = .clear
titleLabel.reset() titleLabel.reset()
feedbackLabel.reset() feedbackLabel.reset()
entryContainer.reset() entryFieldContainer.reset()
titleLabel.textColor = .mfBattleshipGrey() titleLabel.textColor = .mfBattleshipGrey()
} }
@ -295,14 +254,14 @@ import UIKit
@objc open override func setLeftPinConstant(_ constant: CGFloat) { @objc open override func setLeftPinConstant(_ constant: CGFloat) {
entryContainerLeading?.constant = constant entryFieldContainerLeading?.constant = constant
feedbackLabelLeading?.constant = constant feedbackLabelLeading?.constant = constant
titleLabelLeading?.constant = constant titleLabelLeading?.constant = constant
} }
@objc open override func setRightPinConstant(_ constant: CGFloat) { @objc open override func setRightPinConstant(_ constant: CGFloat) {
entryContainerTrailing?.constant = constant entryFieldContainerTrailing?.constant = constant
feedbackLabelTrailing?.constant = constant feedbackLabelTrailing?.constant = constant
titleLabelTrailing?.constant = constant titleLabelTrailing?.constant = constant
} }
@ -317,7 +276,7 @@ extension EntryField {
guard let dictionary = json, !dictionary.isEmpty else { return } guard let dictionary = json, !dictionary.isEmpty else { return }
entryContainer.setWithJSON(dictionary, delegateObject: delegateObject, additionalData: additionalData) entryFieldContainer.setWithJSON(dictionary, delegateObject: delegateObject, additionalData: additionalData)
if let titleText = dictionary[KeyTitle] as? String { if let titleText = dictionary[KeyTitle] as? String {
title = titleText title = titleText

View File

@ -29,6 +29,15 @@ import MVMCore
/// Holds a reference to the delegating class so this class can internally influence the TextField behavior as well. /// Holds a reference to the delegating class so this class can internally influence the TextField behavior as well.
private weak var proprietorTextDelegate: UITextFieldDelegate? private weak var proprietorTextDelegate: UITextFieldDelegate?
/// If you're using a MFViewController, you must set this to it
public override weak var uiTextFieldDelegate: UITextFieldDelegate? {
get { return textField.delegate }
set {
textField.delegate = self
proprietorTextDelegate = newValue
}
}
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Computed Properties // MARK: - Computed Properties
//-------------------------------------------------- //--------------------------------------------------
@ -39,15 +48,6 @@ import MVMCore
set { text = MVMCoreUIUtility.formatMdn(newValue) } set { text = MVMCoreUIUtility.formatMdn(newValue) }
} }
/// If you're using a MFViewController, you must set this to it
public override weak var uiTextFieldDelegate: UITextFieldDelegate? {
get { return textField.delegate }
set {
textField.delegate = self
proprietorTextDelegate = newValue
}
}
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Initializers // MARK: - Initializers
//-------------------------------------------------- //--------------------------------------------------

View File

@ -52,7 +52,7 @@ import UIKit
get { return super.isEnabled } get { return super.isEnabled }
set (enabled) { set (enabled) {
super.isEnabled = enabled super.isEnabled = enabled
DispatchQueue.main.async { [weak self] in DispatchQueue.main.async { [weak self] in
guard let self = self else { return } guard let self = self else { return }
@ -201,7 +201,7 @@ import UIKit
@objc func dismissFieldInput(_ sender: Any?) { @objc func dismissFieldInput(_ sender: Any?) {
_ = self.resignFirstResponder() _ = resignFirstResponder()
} }
public func defaultValidationBlock() { public func defaultValidationBlock() {
@ -238,7 +238,7 @@ import UIKit
if isValid { if isValid {
showError = false showError = false
entryContainer.bottomBar?.backgroundColor = UIColor.black.cgColor entryFieldContainer.bottomBar?.backgroundColor = UIColor.black.cgColor
} else if let errMessage = errorMessage { } else if let errMessage = errorMessage {
feedback = errMessage feedback = errMessage

View File

@ -1,5 +1,5 @@
// //
// FormView.swift // EntryFieldContainer.swift
// MVMCoreUI // MVMCoreUI
// //
// Created by Kevin Christiano on 11/12/19. // Created by Kevin Christiano on 11/12/19.
@ -9,7 +9,7 @@
import UIKit import UIKit
@objcMembers open class FormFieldContainer: View { @objcMembers open class EntryFieldContainer: View {
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Drawing Properties // MARK: - Drawing Properties
//-------------------------------------------------- //--------------------------------------------------
@ -101,7 +101,7 @@ import UIKit
_isLocked = false _isLocked = false
_isEnabled = true _isEnabled = true
_showError = false _showError = false
  
fieldState = selected ? .selected : .original fieldState = selected ? .selected : .original
} }
} }
@ -156,8 +156,8 @@ import UIKit
super.setupView() super.setupView()
isAccessibilityElement = false isAccessibilityElement = false
isOpaque = false isOpaque = false
if let bottomBar = bottomBar { if let bottomBar = bottomBar {
layer.addSublayer(bottomBar) layer.addSublayer(bottomBar)
} }
@ -185,7 +185,7 @@ import UIKit
case locked case locked
case disabled case disabled
public func setStateUI(for formField: FormFieldContainer) { public func setStateUI(for formField: EntryFieldContainer) {
switch self { switch self {
case .original: case .original:
formField.originalUI() formField.originalUI()
@ -272,8 +272,6 @@ import UIKit
guard let dictionary = json, !dictionary.isEmpty else { return } guard let dictionary = json, !dictionary.isEmpty else { return }
if let disableAllBorders = dictionary["disableAllBorders"] as? Bool {
self.disableAllBorders = disableAllBorders
}
} }
} }