Accessibility: Make checkboxes accessible in terms of service screen.

This commit is contained in:
SBiOSoftWhare 2019-12-02 17:46:01 +01:00
parent c80828f09e
commit 3656028e91
3 changed files with 29 additions and 0 deletions

View file

@ -58,6 +58,9 @@
"sending" = "Sending";
"close" = "Close";
// Accessibility
"accessibility_checkbox_label" = "checkbox";
// Authentication
"auth_login" = "Log in";
"auth_register" = "Register";
@ -826,6 +829,7 @@
"service_terms_modal_title_identity_server" = "Contact discovery";
"service_terms_modal_message_identity_server" = "Accept the terms of the identity server (%@) to discover contacts.";
"service_terms_modal_policy_checkbox_accessibility_hint" = "Check to accept %@";
// Deactivate account

View file

@ -14,6 +14,10 @@ internal enum VectorL10n {
internal static var accept: String {
return VectorL10n.tr("Vector", "accept")
}
/// checkbox
internal static var accessibilityCheckboxLabel: String {
return VectorL10n.tr("Vector", "accessibility_checkbox_label")
}
/// Logout all accounts
internal static var accountLogoutAll: String {
return VectorL10n.tr("Vector", "account_logout_all")
@ -2586,6 +2590,10 @@ internal enum VectorL10n {
internal static func serviceTermsModalMessageIdentityServer(_ p1: String) -> String {
return VectorL10n.tr("Vector", "service_terms_modal_message_identity_server", p1)
}
/// Check to accept %@
internal static func serviceTermsModalPolicyCheckboxAccessibilityHint(_ p1: String) -> String {
return VectorL10n.tr("Vector", "service_terms_modal_policy_checkbox_accessibility_hint", p1)
}
/// Terms Of Service
internal static var serviceTermsModalTitle: String {
return VectorL10n.tr("Vector", "service_terms_modal_title")

View file

@ -224,11 +224,23 @@ final class ServiceTermsModalScreenViewController: UIViewController {
guard let policyIndex = sender.view?.tag else {
return
}
let isCheckBoxSelected: Bool
if self.checkedPolicies.contains(policyIndex) {
self.checkedPolicies.remove(policyIndex)
isCheckBoxSelected = false
} else {
checkedPolicies.insert(policyIndex)
isCheckBoxSelected = true
}
if let checkBoxImageView = sender.view as? UIImageView {
if isCheckBoxSelected {
checkBoxImageView.accessibilityTraits.insert(.selected)
} else {
checkBoxImageView.accessibilityTraits.remove(.selected)
}
}
self.refreshViews()
@ -275,6 +287,11 @@ extension ServiceTermsModalScreenViewController: UITableViewDataSource {
checkBox.isUserInteractionEnabled = true
checkBox.tag = indexPath.row
checkBox.addGestureRecognizer(gesture)
checkBox.isAccessibilityElement = true
checkBox.accessibilityTraits = .button
checkBox.accessibilityLabel = VectorL10n.accessibilityCheckboxLabel
checkBox.accessibilityHint = VectorL10n.serviceTermsModalPolicyCheckboxAccessibilityHint(policy.name)
}
return cell