diff --git a/VDS/Components/TextFields/EntryFieldBase.swift b/VDS/Components/TextFields/EntryFieldBase.swift index 9f7cf49d..a8ad917a 100644 --- a/VDS/Components/TextFields/EntryFieldBase.swift +++ b/VDS/Components/TextFields/EntryFieldBase.swift @@ -129,6 +129,7 @@ open class EntryFieldBase: Control, Changeable, FormFieldInternalValidatable { open var errorLabel = Label().with { $0.setContentCompressionResistancePriority(.required, for: .vertical) $0.textStyle = .bodySmall + $0.accessibilityValue = "error" } open var helperLabel = Label().with { diff --git a/VDS/Components/TextFields/InputField/InputField.swift b/VDS/Components/TextFields/InputField/InputField.swift index 004b33ae..e34ee01c 100644 --- a/VDS/Components/TextFields/InputField/InputField.swift +++ b/VDS/Components/TextFields/InputField/InputField.swift @@ -151,7 +151,8 @@ open class InputField: EntryFieldBase, UITextFieldDelegate { /// Called once when a view is initialized and is used to Setup additional UI or other constants and configurations. open override func setup() { super.setup() - + isAccessibilityElement = false + minWidthConstraint = containerView.widthAnchor.constraint(greaterThanOrEqualToConstant: 0) minWidthConstraint?.isActive = true @@ -272,6 +273,25 @@ open class InputField: EntryFieldBase, UITextFieldDelegate { } } + /// Used to update any Accessibility properties. + open override func updateAccessibility() { + super.updateAccessibility() + textField.accessibilityLabel = showError ? "error" : nil + if showError { + accessibilityElements = [titleLabel, textField, icon, errorLabel, helperLabel] + } else { + accessibilityElements = [titleLabel, textField, helperLabel] + } + } + + open override var canBecomeFirstResponder: Bool { true } + + open override func resignFirstResponder() -> Bool { + if textField.isFirstResponder { + textField.resignFirstResponder() + } + return super.resignFirstResponder() + } } extension InputField.FieldType { diff --git a/VDS/Components/TextFields/TextArea/TextArea.swift b/VDS/Components/TextFields/TextArea/TextArea.swift index b8f0e009..d057333b 100644 --- a/VDS/Components/TextFields/TextArea/TextArea.swift +++ b/VDS/Components/TextFields/TextArea/TextArea.swift @@ -239,6 +239,7 @@ open class TextArea: EntryFieldBase { /// Used to update any Accessibility properties. open override func updateAccessibility() { super.updateAccessibility() + textView.accessibilityLabel = showError ? "error" : nil if showError { accessibilityElements = [titleLabel, textView, icon, errorLabel, helperLabel] } else { @@ -246,6 +247,15 @@ open class TextArea: EntryFieldBase { } } + open override var canBecomeFirstResponder: Bool { true } + + open override func resignFirstResponder() -> Bool { + if textView.isFirstResponder { + textView.resignFirstResponder() + } + return super.resignFirstResponder() + } + //-------------------------------------------------- // MARK: - Private Methods //-------------------------------------------------- diff --git a/VDS/Components/TextFields/TextArea/TextView.swift b/VDS/Components/TextFields/TextArea/TextView.swift index d461ee23..c35b4a80 100644 --- a/VDS/Components/TextFields/TextArea/TextView.swift +++ b/VDS/Components/TextFields/TextArea/TextView.swift @@ -147,5 +147,6 @@ open class TextView: UITextView, ViewProtocol { attributedText = nil } } + }