This commit is contained in:
Kevin G Christiano 2021-02-15 09:18:20 -05:00
parent 3efe4ae81f
commit 2e1e5772d7
5 changed files with 48 additions and 35 deletions

View File

@ -50,6 +50,18 @@ open class BaseItemPickerEntryField: BaseDropdownEntryField, UIPickerViewDelegat
pickerView?.dataSource = delegate
}
//--------------------------------------------------
// MARK: - Molecular
//--------------------------------------------------
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
super.set(with: model, delegateObject, additionalData)
guard let model = model as? BaseItemPickerEntryFieldModel else { return }
setPickerDelegates(delegate: self)
}
//--------------------------------------------------
// MARK: - Picker Delegate to Override
//--------------------------------------------------
@ -58,3 +70,19 @@ open class BaseItemPickerEntryField: BaseDropdownEntryField, UIPickerViewDelegat
public func numberOfComponents(in pickerView: UIPickerView) -> Int { 0 }
}
// MARK: - Accessibility
extension BaseItemPickerEntryField {
@objc open override func setAccessibilityString(_ accessibilityString: String?) {
var accessibilityString = accessibilityString ?? ""
if let textPickerItem = MVMCoreUIUtility.hardcodedString(withKey: "textfield_picker_item") {
accessibilityString += textPickerItem
}
textField.accessibilityLabel = "\(accessibilityString) \(textField.isEnabled ? "" : MVMCoreUIUtility.hardcodedString(withKey: "textfield_disabled_state") ?? "")"
}
}

View File

@ -83,7 +83,6 @@ open class ItemDropdownEntryField: BaseItemPickerEntryField {
guard let model = model as? ItemDropdownEntryFieldModel else { return }
pickerData = model.options
setPickerDelegates(delegate: self)
if let pickerView = pickerView, let index = model.selectedIndex {
self.pickerView(pickerView, didSelectRow: index, inComponent: 0)
@ -114,18 +113,3 @@ open class ItemDropdownEntryField: BaseItemPickerEntryField {
itemDropdownEntryFieldModel?.selectedIndex = row
}
}
// MARK: - Accessibility
extension ItemDropdownEntryField {
@objc open override func setAccessibilityString(_ accessibilityString: String?) {
var accessibilityString = accessibilityString ?? ""
if let textPickerItem = MVMCoreUIUtility.hardcodedString(withKey: "textfield_picker_item") {
accessibilityString += textPickerItem
}
textField.accessibilityLabel = "\(accessibilityString) \(textField.isEnabled ? "" : MVMCoreUIUtility.hardcodedString(withKey: "textfield_disabled_state") ?? "")"
}
}

View File

@ -100,8 +100,6 @@ open class MultiItemDropdownEntryField: BaseItemPickerEntryField {
guard let model = model as? MultiItemDropdownEntryFieldModel else { return }
setPickerDelegates(delegate: self)
if let pickerView = pickerView {
for (component, index) in model.selectedIndexes {
self.pickerView(pickerView, didSelectRow: index, inComponent: component)
@ -140,18 +138,3 @@ open class MultiItemDropdownEntryField: BaseItemPickerEntryField {
dropdownModel?.selectedIndexes[component] = row
}
}
// MARK: - Accessibility
extension MultiItemDropdownEntryField {
@objc open override func setAccessibilityString(_ accessibilityString: String?) {
var accessibilityString = accessibilityString ?? ""
if let textPickerItem = MVMCoreUIUtility.hardcodedString(withKey: "textfield_picker_item") {
accessibilityString += textPickerItem
}
textField.accessibilityLabel = "\(accessibilityString) \(textField.isEnabled ? "" : MVMCoreUIUtility.hardcodedString(withKey: "textfield_disabled_state") ?? "")"
}
}

View File

@ -96,8 +96,25 @@ import UIKit
open override var text: String? {
get { textField.text }
set {
textField.text = newValue
textEntryFieldModel?.text = newValue
if let regex = textEntryFieldModel?.displayFormat,
let mask = textEntryFieldModel?.displayMask,
let newText = newValue {
let range = NSRange(newText.startIndex..., in: newText)
if let regex = try? NSRegularExpression(pattern: regex) {
let afterText = regex.stringByReplacingMatches(in: newText,
range: range,
withTemplate: mask
)
print(afterText)
}
} else {
textField.text = newValue
}
}
}

View File

@ -35,7 +35,8 @@
public var keyboardOverride: String?
public var type: EntryType?
public var clearTextOnTap: Bool = false
public var displayFormat: String?
public var displayFormat: String? = "(?=\\d{5})\\d"
public var displayMask: String? = ""
//--------------------------------------------------
// MARK: - Methods