This commit is contained in:
Kevin G Christiano 2019-11-18 15:40:27 -05:00
parent 9b581a6132
commit 1af47ab98d
3 changed files with 49 additions and 26 deletions

View File

@ -24,41 +24,44 @@ open class DateDropdownEntryField: DropdownEntryField {
// TODO: Pull this out into Styler or some class akin to it.
public var formatter: DateFormatter = {
let formatter = DateFormatter()
formatter.dateStyle = .medium
formatter.timeZone = NSTimeZone.system
formatter.locale = .current
formatter.formatterBehavior = .default
return formatter
}()
//--------------------------------------------------
// MARK: - Delegate
//--------------------------------------------------
/// Holds a reference to the delegating class so this class can internally influence the TextField behavior as well.
private weak var proprietorTextDelegate: UITextFieldDelegate?
//--------------------------------------------------
// MARK: - Initializer
//--------------------------------------------------
public override init(frame: CGRect) {
super.init(frame: frame)
datePicker = MVMCoreUICommonViewsUtility.addDatePicker(to: textField)
datePicker?.timeZone = NSTimeZone.system
MVMCoreUICommonViewsUtility.addDismissToolbar(textField, delegate: textField.delegate)
}
public convenience init() {
self.init(frame: .zero)
setup()
}
public convenience init(startDate: Date, endDate: Date, showStartDate: Bool = true) {
self.init(frame: .zero)
setup()
setDatePickerDuration(from: startDate, to: endDate, showStartDate: showStartDate)
}
required public init?(coder: NSCoder) {
super.init(coder: coder)
fatalError("DateDropdownEntryField does not support xib.")
private func setup() {
datePicker = MVMCoreUICommonViewsUtility.addDatePicker(to: textField)
datePicker?.addTarget(self, action: #selector(valueChanged(_:)), for: .valueChanged)
datePicker?.timeZone = NSTimeZone.system
MVMCoreUICommonViewsUtility.addDismissToolbar(textField, delegate: self)
}
//--------------------------------------------------
@ -94,6 +97,26 @@ open class DateDropdownEntryField: DropdownEntryField {
text = formatter.string(from: date)
}
}
@objc override func dismissFieldInput(_ sender: Any?) {
setTextWith(date: datePicker?.date)
super.dismissFieldInput(sender)
}
@objc func valueChanged(_ sender: UIDatePicker){
setTextWith(date: datePicker?.date)
}
}
// MARK: - UITextField Intercept
extension DateDropdownEntryField {
public func textFieldDidBeginEditing(_ textField: UITextField) {
// setInitialValueFromPicker()
proprietorTextDelegate?.textFieldDidBeginEditing?(textField)
}
}
// MARK: - Molecular

View File

@ -27,14 +27,14 @@ open class ItemDropdownEntryField: DropdownEntryField {
//--------------------------------------------------
/// Holds a reference to the delegating class so this class can internally influence the TextField behavior as well.
private weak var outsiderTextDelegate: 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
outsiderTextDelegate = newValue
proprietorTextDelegate = newValue
}
}
@ -55,7 +55,7 @@ open class ItemDropdownEntryField: DropdownEntryField {
// MARK: - Methods
//--------------------------------------------------
public func setPickerDelegate(delegate: UIPickerViewDelegate & UIPickerViewDataSource) {
public func setPickerDelegates(delegate: UIPickerViewDelegate & UIPickerViewDataSource) {
pickerView?.delegate = delegate
pickerView?.dataSource = delegate
@ -111,7 +111,7 @@ extension ItemDropdownEntryField {
public func textFieldDidBeginEditing(_ textField: UITextField) {
setInitialValueFromPicker()
outsiderTextDelegate?.textFieldDidBeginEditing?(textField)
proprietorTextDelegate?.textFieldDidBeginEditing?(textField)
}
}

View File

@ -27,7 +27,7 @@ import MVMCore
//--------------------------------------------------
/// Holds a reference to the delegating class so this class can internally influence the TextField behavior as well.
private weak var outsiderTextDelegate: UITextFieldDelegate?
private weak var proprietorTextDelegate: UITextFieldDelegate?
//--------------------------------------------------
// MARK: - Property Observers
@ -44,7 +44,7 @@ import MVMCore
get { return textField.delegate }
set {
textField.delegate = self
outsiderTextDelegate = newValue
proprietorTextDelegate = newValue
}
}
@ -167,7 +167,7 @@ import MVMCore
textField.resignFirstResponder()
return outsiderTextDelegate?.textFieldShouldReturn?(textField) ?? true
return proprietorTextDelegate?.textFieldShouldReturn?(textField) ?? true
}
public func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
@ -176,18 +176,18 @@ import MVMCore
return false
}
return outsiderTextDelegate?.textField?(textField, shouldChangeCharactersIn: range, replacementString: string) ?? true
return proprietorTextDelegate?.textField?(textField, shouldChangeCharactersIn: range, replacementString: string) ?? true
}
public func textFieldDidBeginEditing(_ textField: UITextField) {
textField.text = MVMCoreUIUtility.removeMdnFormat(textField.text)
outsiderTextDelegate?.textFieldDidBeginEditing?(textField)
proprietorTextDelegate?.textFieldDidBeginEditing?(textField)
}
public func textFieldDidEndEditing(_ textField: UITextField) {
outsiderTextDelegate?.textFieldDidEndEditing?(textField)
proprietorTextDelegate?.textFieldDidEndEditing?(textField)
if validateAndColor() && isNationalMDN {
textField.text = MVMCoreUIUtility.formatMdn(textField.text)
@ -200,16 +200,16 @@ import MVMCore
public func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
return outsiderTextDelegate?.textFieldShouldBeginEditing?(textField) ?? true
return proprietorTextDelegate?.textFieldShouldBeginEditing?(textField) ?? true
}
public func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {
return outsiderTextDelegate?.textFieldShouldEndEditing?(textField) ?? true
return proprietorTextDelegate?.textFieldShouldEndEditing?(textField) ?? true
}
public func textFieldShouldClear(_ textField: UITextField) -> Bool {
return outsiderTextDelegate?.textFieldShouldClear?(textField) ?? true
return proprietorTextDelegate?.textFieldShouldClear?(textField) ?? true
}
}