From 92b988d9fb1296b0883da48f071532cb25826544 Mon Sep 17 00:00:00 2001 From: Kevin G Christiano Date: Fri, 15 Nov 2019 08:52:29 -0500 Subject: [PATCH] setting up dropdown. --- .../TextFields/DateDropdownEntryField.swift | 2 +- .../Atoms/TextFields/DropdownEntryField.swift | 9 ++++----- MVMCoreUI/Atoms/TextFields/EntryField.swift | 2 +- .../TextFields/ItemDropdownEntryField.swift | 17 ++++++++++++++--- MVMCoreUI/Atoms/TextFields/MdnEntryField.swift | 3 ++- MVMCoreUI/Atoms/TextFields/TextEntryField.swift | 6 +++--- 6 files changed, 25 insertions(+), 14 deletions(-) diff --git a/MVMCoreUI/Atoms/TextFields/DateDropdownEntryField.swift b/MVMCoreUI/Atoms/TextFields/DateDropdownEntryField.swift index e2f5b9f2..965c5495 100644 --- a/MVMCoreUI/Atoms/TextFields/DateDropdownEntryField.swift +++ b/MVMCoreUI/Atoms/TextFields/DateDropdownEntryField.swift @@ -9,7 +9,7 @@ import UIKit -class DateDropdownEntryField: DropdownEntryField { +open class DateDropdownEntryField: DropdownEntryField { //-------------------------------------------------- // MARK: - Properties //-------------------------------------------------- diff --git a/MVMCoreUI/Atoms/TextFields/DropdownEntryField.swift b/MVMCoreUI/Atoms/TextFields/DropdownEntryField.swift index 2bb89424..04f8dacb 100644 --- a/MVMCoreUI/Atoms/TextFields/DropdownEntryField.swift +++ b/MVMCoreUI/Atoms/TextFields/DropdownEntryField.swift @@ -8,7 +8,10 @@ import UIKit - +/** + This class is intended to be subclassed. + See ItemDropdownEntryField and DateDropdownEntryField. + */ @objcMembers open class DropdownEntryField: TextEntryField { //-------------------------------------------------- // MARK: - Outlets @@ -42,10 +45,6 @@ import UIKit super.init(frame: frame) } - public convenience init() { - self.init(frame: .zero) - } - required public init?(coder: NSCoder) { super.init(coder: coder) fatalError("DropdownEntryField does not support xib.") diff --git a/MVMCoreUI/Atoms/TextFields/EntryField.swift b/MVMCoreUI/Atoms/TextFields/EntryField.swift index d72d4be7..65e4e44e 100644 --- a/MVMCoreUI/Atoms/TextFields/EntryField.swift +++ b/MVMCoreUI/Atoms/TextFields/EntryField.swift @@ -68,7 +68,7 @@ import UIKit guard let self = self else { return } self.entryContainer.showError = self.showError - self.feedback = self.errorMessage + self.feedback = self.showError ? self.errorMessage : nil } } } diff --git a/MVMCoreUI/Atoms/TextFields/ItemDropdownEntryField.swift b/MVMCoreUI/Atoms/TextFields/ItemDropdownEntryField.swift index 41efd185..12c5cedd 100644 --- a/MVMCoreUI/Atoms/TextFields/ItemDropdownEntryField.swift +++ b/MVMCoreUI/Atoms/TextFields/ItemDropdownEntryField.swift @@ -9,13 +9,13 @@ import UIKit -class ItemDropdownEntryField: DropdownEntryField { +open class ItemDropdownEntryField: DropdownEntryField { //-------------------------------------------------- // MARK: - Properties //-------------------------------------------------- - var pickerData: [String] = [] - var pickerView: UIPickerView? + public var pickerData: [String] = [] + public var pickerView: UIPickerView? //-------------------------------------------------- // MARK: - Initializer @@ -28,8 +28,19 @@ class ItemDropdownEntryField: DropdownEntryField { public convenience init(pickerData: [String]) { self.init(frame: .zero) + self.pickerData = pickerData pickerView = MVMCoreUICommonViewsUtility.addPicker(to: textField, delegate: self) } + + //-------------------------------------------------- + // MARK: - Methods + //-------------------------------------------------- + + public func setPickerDelegate(delegate: UIPickerViewDelegate & UIPickerViewDataSource) { + + pickerView?.delegate = delegate + pickerView?.dataSource = delegate + } } // MARK:- Base Picker Delegate diff --git a/MVMCoreUI/Atoms/TextFields/MdnEntryField.swift b/MVMCoreUI/Atoms/TextFields/MdnEntryField.swift index 26a5266f..7f7bbeb3 100644 --- a/MVMCoreUI/Atoms/TextFields/MdnEntryField.swift +++ b/MVMCoreUI/Atoms/TextFields/MdnEntryField.swift @@ -83,7 +83,7 @@ import MVMCore let toolbar = MVMCoreUICommonViewsUtility.makeEmptyToolbar() let space = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil) let contacts = UIBarButtonItem(title: MVMCoreUIUtility.hardcodedString(withKey: "textfield_contacts_barbutton"), style: .plain, target: self, action: #selector(getContacts(_:))) - let dismissButton = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(dismissField(_:))) + let dismissButton = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(dismissFieldInput(_:))) toolbar.items = [contacts, space, dismissButton] textField.inputAccessoryView = toolbar } @@ -112,6 +112,7 @@ import MVMCore clearErrorState() } else { errorMessage = errorMessage ?? MVMCoreUIUtility.hardcodedString(withKey: "textfield_phone_format_error_message") + showError = true UIAccessibility.post(notification: .layoutChanged, argument: textField) } diff --git a/MVMCoreUI/Atoms/TextFields/TextEntryField.swift b/MVMCoreUI/Atoms/TextFields/TextEntryField.swift index 8d4aa4aa..49d9b1e3 100644 --- a/MVMCoreUI/Atoms/TextFields/TextEntryField.swift +++ b/MVMCoreUI/Atoms/TextFields/TextEntryField.swift @@ -15,7 +15,7 @@ import UIKit /// Called when the entered text becomes invalid based on the validation block @objc optional func isInvalid(textfield: TextEntryField?) /// Dismisses the keyboard. - @objc optional func dismissField(sender: Any?) + @objc optional func dismissFieldInput(sender: Any?) } @@ -182,7 +182,7 @@ import UIKit textField.accessibilityValue = nil feedback = nil - entryContainer.originalUI() + showError = false } public func setBothTextDelegates(to delegate: (UITextFieldDelegate & ObservingTextFieldDelegate)?) { @@ -204,7 +204,7 @@ import UIKit return true } - @objc func dismissField(_ sender: Any?) { + @objc func dismissFieldInput(_ sender: Any?) { _ = self.resignFirstResponder() }