blob: 8016e67046a7552215fa5c258ec97e25bba8fcb4 [file] [log] [blame] [view] [edit]
### MDCTextField Accessibility
Like UITextFields, MDCTextFields are accessible by default. To best take advantage of their accessibility features
please review the following recommendations.
#### `-accessibilityValue` Behavior
Similar to UITextFields, MDCTextFields are not accessibility elements themselves. Rather, they are accessibility
containers whose subviews act as accessibility elements. Such subviews include the MDCTextField's placeholder
label, the leading and trailing underline labels, and the clear button. The `accessibilityLabels` of these subviews
contribute to the `accessibilityValue` of the MDCTextField as a whole, giving it a value consistent with that of a
UITextField in a similar state. If the MDCTextField is empty, it will return a combination of any placeholderLabel text and
leading underline text. If the MDCTextField is not empty, it will return a combination of the MDCTextField's current text
and any leading underline text.
#### Using `-accessibilityLabel`
MDCTextField does not provide a custom implementation for `accessibilityLabel`. The client is free to set an
appropriate `accessibilityLabel` following norms established by Apple if they wish. However, they should consider
whether or not it it will provide information that is superfluous. A common scenario in which an
`accessibilityLabel` might not be necessary would be an MDCTextField whose leading underline label (a view not
present in UITextFields) conveys the information that an accessibility label might have otherwise conveyed. For
example, if an MDCTextField is intended to hold a user's zip code, and the leading underline label's
`accessibilityLabel` is already "Zip code", setting an `accessibilityLabel` of "Zip code" on the MDCTextField
may lead to duplicate VoiceOver statements.
#### Using `-accessibilityHint`
In general, Apple advises designing your user interface in such a way that clarification in the form of an
`-accessibilityHint` is not needed. However, it is always an option.