shaping up to be more responsive.
This commit is contained in:
parent
87b0316d47
commit
fca540afc2
@ -142,9 +142,10 @@ import UIKit
|
|||||||
|
|
||||||
showError = show
|
showError = show
|
||||||
borderStrokeColor = show ? .mfPumpkin() : .mfSilver()
|
borderStrokeColor = show ? .mfPumpkin() : .mfSilver()
|
||||||
bottomBar.backgroundColor = show ? UIColor.mfPumpkin().cgColor : UIColor.black.cgColor
|
|
||||||
let barHeight: CGFloat = show ? 4 : 1
|
let barHeight: CGFloat = show ? 4 : 1
|
||||||
bottomBar.frame = CGRect(x: 0, y: bounds.height - barHeight, width: bounds.width, height: barHeight)
|
bottomBar.frame = CGRect(x: 0, y: bounds.height - barHeight, width: bounds.width, height: barHeight)
|
||||||
|
bottomBar.backgroundColor = show ? UIColor.mfPumpkin().cgColor : UIColor.black.cgColor
|
||||||
|
|
||||||
setNeedsDisplay()
|
setNeedsDisplay()
|
||||||
layoutIfNeeded()
|
layoutIfNeeded()
|
||||||
|
|||||||
@ -21,6 +21,10 @@ import UIKit
|
|||||||
|
|
||||||
public var digitFields: [DigitBox] = []
|
public var digitFields: [DigitBox] = []
|
||||||
|
|
||||||
|
//--------------------------------------------------
|
||||||
|
// MARK: - Property Observers
|
||||||
|
//--------------------------------------------------
|
||||||
|
|
||||||
public override var isEnabled: Bool {
|
public override var isEnabled: Bool {
|
||||||
didSet {
|
didSet {
|
||||||
titleLabel.textColor = self.isEnabled ? .mfBattleshipGrey() : .mfSilver()
|
titleLabel.textColor = self.isEnabled ? .mfBattleshipGrey() : .mfSilver()
|
||||||
|
|||||||
@ -37,6 +37,10 @@ import UIKit
|
|||||||
|
|
||||||
public var dropDownIsDisplayed = false
|
public var dropDownIsDisplayed = false
|
||||||
|
|
||||||
|
//--------------------------------------------------
|
||||||
|
// MARK: - Property Observers
|
||||||
|
//--------------------------------------------------
|
||||||
|
|
||||||
public override var isEnabled: Bool {
|
public override var isEnabled: Bool {
|
||||||
didSet { showDropDown(isEnabled) }
|
didSet { showDropDown(isEnabled) }
|
||||||
}
|
}
|
||||||
@ -212,8 +216,8 @@ extension DropdownEntryField {
|
|||||||
|
|
||||||
var accessibilityString = accessibilityString ?? ""
|
var accessibilityString = accessibilityString ?? ""
|
||||||
|
|
||||||
if dropDownIsDisplayed, let txtPickerItem = MVMCoreUIUtility.hardcodedString(withKey: "textfield_picker_item") {
|
if dropDownIsDisplayed, let textPickerItem = MVMCoreUIUtility.hardcodedString(withKey: "textfield_picker_item") {
|
||||||
accessibilityString += txtPickerItem
|
accessibilityString += textPickerItem
|
||||||
|
|
||||||
} else if let txtRegular = MVMCoreUIUtility.hardcodedString(withKey: "textfield_regular") {
|
} else if let txtRegular = MVMCoreUIUtility.hardcodedString(withKey: "textfield_regular") {
|
||||||
accessibilityString += txtRegular
|
accessibilityString += txtRegular
|
||||||
|
|||||||
@ -56,15 +56,24 @@ import UIKit
|
|||||||
public var isValid = false
|
public var isValid = false
|
||||||
public var fieldKey: String?
|
public var fieldKey: String?
|
||||||
|
|
||||||
|
public var errorMessage: String?
|
||||||
|
|
||||||
|
//--------------------------------------------------
|
||||||
|
// MARK: - Property Observers
|
||||||
|
//--------------------------------------------------
|
||||||
|
|
||||||
/// Toggles error or original UI.
|
/// Toggles error or original UI.
|
||||||
public var showError = false {
|
public var showError = false {
|
||||||
didSet {
|
didSet {
|
||||||
entryContainer.showError = showError
|
DispatchQueue.main.async { [weak self] in
|
||||||
|
guard let self = self else { return }
|
||||||
|
|
||||||
|
self.entryContainer.showError = self.showError
|
||||||
|
self.feedback = self.errorMessage
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public var errorMessage: String?
|
|
||||||
|
|
||||||
/// Toggles original or disabled UI.
|
/// Toggles original or disabled UI.
|
||||||
public var isEnabled = true {
|
public var isEnabled = true {
|
||||||
didSet {
|
didSet {
|
||||||
@ -86,7 +95,17 @@ import UIKit
|
|||||||
guard let self = self else { return }
|
guard let self = self else { return }
|
||||||
|
|
||||||
self.isUserInteractionEnabled = !self.isLocked
|
self.isUserInteractionEnabled = !self.isLocked
|
||||||
self.entryContainer.lockedUI()
|
self.entryContainer.isLocked = self.isLocked
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public var isSelected = false {
|
||||||
|
didSet {
|
||||||
|
DispatchQueue.main.async { [weak self] in
|
||||||
|
guard let self = self else { return }
|
||||||
|
|
||||||
|
self.entryContainer.isSelected = self.isSelected
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -22,6 +22,10 @@ import MVMCore
|
|||||||
|
|
||||||
private weak var outsiderTextDelegate: UITextFieldDelegate?
|
private weak var outsiderTextDelegate: UITextFieldDelegate?
|
||||||
|
|
||||||
|
//--------------------------------------------------
|
||||||
|
// MARK: - Property Observers
|
||||||
|
//--------------------------------------------------
|
||||||
|
|
||||||
public var mdn: String? {
|
public var mdn: String? {
|
||||||
get { return MVMCoreUIUtility.removeMdnFormat(text) }
|
get { return MVMCoreUIUtility.removeMdnFormat(text) }
|
||||||
set { text = MVMCoreUIUtility.formatMdn(newValue) }
|
set { text = MVMCoreUIUtility.formatMdn(newValue) }
|
||||||
|
|||||||
@ -40,10 +40,15 @@ import UIKit
|
|||||||
// MARK: - Properties
|
// MARK: - Properties
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
|
||||||
public var textColor: (enabled: UIColor?, disabled: UIColor?)
|
/// Set enabled and disabled colors to be utilized when setting this texfield's isEnabled property.
|
||||||
|
public var textColor: (enabled: UIColor?, disabled: UIColor?) = (.black, .mfSilver())
|
||||||
|
|
||||||
public var observingForChange = false
|
public var observingForChange = false
|
||||||
|
|
||||||
|
//--------------------------------------------------
|
||||||
|
// MARK: - Property Observers
|
||||||
|
//--------------------------------------------------
|
||||||
|
|
||||||
public override var isEnabled: Bool {
|
public override var isEnabled: Bool {
|
||||||
didSet {
|
didSet {
|
||||||
DispatchQueue.main.async { [weak self] in
|
DispatchQueue.main.async { [weak self] in
|
||||||
@ -91,6 +96,7 @@ import UIKit
|
|||||||
NotificationCenter.default.addObserver(self, selector: #selector(valueChanged), name: UITextField.textDidChangeNotification, object: textField)
|
NotificationCenter.default.addObserver(self, selector: #selector(valueChanged), name: UITextField.textDidChangeNotification, object: textField)
|
||||||
NotificationCenter.default.addObserver(self, selector: #selector(endInputing), name: UITextField.textDidEndEditingNotification, object: textField)
|
NotificationCenter.default.addObserver(self, selector: #selector(endInputing), name: UITextField.textDidEndEditingNotification, object: textField)
|
||||||
NotificationCenter.default.addObserver(self, selector: #selector(startEditing), name: UITextField.textDidBeginEditingNotification, object: textField)
|
NotificationCenter.default.addObserver(self, selector: #selector(startEditing), name: UITextField.textDidBeginEditingNotification, object: textField)
|
||||||
|
|
||||||
} else if mfTextFieldDelegate == nil && observingForChange {
|
} else if mfTextFieldDelegate == nil && observingForChange {
|
||||||
observingForChange = false
|
observingForChange = false
|
||||||
NotificationCenter.default.removeObserver(self, name: UITextField.textDidChangeNotification, object: textField)
|
NotificationCenter.default.removeObserver(self, name: UITextField.textDidChangeNotification, object: textField)
|
||||||
@ -190,9 +196,16 @@ import UIKit
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc func dismissTextFieldResponder(_ sender: Any?) {
|
override open func resignFirstResponder() -> Bool {
|
||||||
|
|
||||||
textField.resignFirstResponder()
|
textField.resignFirstResponder()
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc func dismissTextFieldResponder(_ sender: Any?) {
|
||||||
|
|
||||||
|
_ = textField.resignFirstResponder()
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
|||||||
@ -11,7 +11,7 @@ import UIKit
|
|||||||
|
|
||||||
@objcMembers open class FormView: View {
|
@objcMembers open class FormView: View {
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Properties
|
// MARK: - Drawing Properties
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
|
||||||
public var bottomBar: CAShapeLayer = {
|
public var bottomBar: CAShapeLayer = {
|
||||||
@ -22,14 +22,19 @@ import UIKit
|
|||||||
return layer
|
return layer
|
||||||
}()
|
}()
|
||||||
|
|
||||||
public var borderStrokeColor: UIColor = .mfSilver()
|
|
||||||
public var borderPath: UIBezierPath = UIBezierPath()
|
|
||||||
|
|
||||||
/// Determines if a border should be drawn.
|
/// Determines if a border should be drawn.
|
||||||
public var hideBorder = false
|
public var hideBorder = false
|
||||||
|
|
||||||
|
public var borderStrokeColor: UIColor = .mfSilver()
|
||||||
|
private var borderPath: UIBezierPath = UIBezierPath()
|
||||||
|
|
||||||
|
//--------------------------------------------------
|
||||||
|
// MARK: - Property Observers
|
||||||
|
//--------------------------------------------------
|
||||||
|
|
||||||
public var showError = false {
|
public var showError = false {
|
||||||
didSet {
|
didSet {
|
||||||
_ = showError ? errorUI() : originalUI()
|
showError ? errorUI() : originalUI()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -39,10 +44,23 @@ import UIKit
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public var isLocked = false {
|
||||||
|
didSet {
|
||||||
|
isLocked ? lockedUI() : originalUI()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public var isSelected = false {
|
||||||
|
didSet {
|
||||||
|
isSelected ? selectedUI() : originalUI()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Delegate
|
// MARK: - Delegate
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
|
||||||
|
/// Holds reference to delegateObject to inform molecular tableView of an update.
|
||||||
weak var delegateObject: MVMCoreUIDelegateObject?
|
weak var delegateObject: MVMCoreUIDelegateObject?
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
@ -145,7 +163,7 @@ import UIKit
|
|||||||
|
|
||||||
open func refreshUI(bottomBarSize: CGFloat? = nil) {
|
open func refreshUI(bottomBarSize: CGFloat? = nil) {
|
||||||
|
|
||||||
let size: CGFloat = showError ? 4 : 1
|
let size: CGFloat = bottomBarSize ?? (showError ? 4 : 1)
|
||||||
bottomBar.frame = CGRect(x: 0, y: bounds.height - size, width: bounds.width, height: size)
|
bottomBar.frame = CGRect(x: 0, y: bounds.height - size, width: bounds.width, height: size)
|
||||||
|
|
||||||
delegateObject?.moleculeDelegate?.moleculeLayoutUpdated?(self)
|
delegateObject?.moleculeDelegate?.moleculeLayoutUpdated?(self)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user