Icon buttons

Icon buttons (those that don't have labels) are opaque to screen readers: there's no information on what the button does, so we should add it.

let button = UIButton(type: .system)
button.setImage(UIImage(systemName: "person.badge.plus", for: .normal)
button.accessibilityLabel = "Add contact"

Uppercased text

Uppercased text may confuse screen readers. We should always add an accessibility label with a non-uppercased version of the text. This is true for labels, buttons and any other view that displays text.

let text = "Add contact"

let label = UILabel()
label.text = text.uppercased()
label.accessibilityLabel = text

let button = UIButton(type: .system)
button.setTitle(text.uppercased(), for: .normal)
button.accessibilityLabel = text