diff --git a/Session/Conversations/ConversationVC.swift b/Session/Conversations/ConversationVC.swift index 205c08314..57f7b71be 100644 --- a/Session/Conversations/ConversationVC.swift +++ b/Session/Conversations/ConversationVC.swift @@ -195,6 +195,7 @@ final class ConversationVC: BaseVC, ConversationSearchControllerDelegate, UITabl messageLabelAccessibilityLabel: "Blocked banner text" ) result.accessibilityLabel = "Blocked banner" + result.isAccessibilityElement = true let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(unblock)) result.addGestureRecognizer(tapGestureRecognizer) @@ -243,6 +244,7 @@ final class ConversationVC: BaseVC, ConversationSearchControllerDelegate, UITabl private lazy var messageRequestAcceptButton: UIButton = { let result: SessionButton = SessionButton(style: .bordered, size: .medium) result.accessibilityLabel = "Accept message request" + result.isAccessibilityElement = true result.translatesAutoresizingMaskIntoConstraints = false result.setTitle("TXT_DELETE_ACCEPT".localized(), for: .normal) result.addTarget(self, action: #selector(acceptMessageRequest), for: .touchUpInside) @@ -253,6 +255,7 @@ final class ConversationVC: BaseVC, ConversationSearchControllerDelegate, UITabl private lazy var messageRequestDeleteButton: UIButton = { let result: SessionButton = SessionButton(style: .destructive, size: .medium) result.accessibilityLabel = "Decline message request" + result.isAccessibilityElement = true result.translatesAutoresizingMaskIntoConstraints = false result.setTitle("TXT_DECLINE_TITLE".localized(), for: .normal) result.addTarget(self, action: #selector(deleteMessageRequest), for: .touchUpInside) diff --git a/Session/Conversations/Input View/InputView.swift b/Session/Conversations/Input View/InputView.swift index 5139a2379..b1b40c892 100644 --- a/Session/Conversations/Input View/InputView.swift +++ b/Session/Conversations/Input View/InputView.swift @@ -53,6 +53,7 @@ final class InputView: UIView, InputViewButtonDelegate, InputTextViewDelegate, M private lazy var attachmentsButton: ExpandingAttachmentsButton = { let result = ExpandingAttachmentsButton(delegate: delegate) result.accessibilityLabel = "Attachments button" + result.isAccessibilityElement = true return result }() @@ -60,6 +61,7 @@ final class InputView: UIView, InputViewButtonDelegate, InputTextViewDelegate, M private lazy var voiceMessageButton: InputViewButton = { let result = InputViewButton(icon: #imageLiteral(resourceName: "Microphone"), delegate: self) result.accessibilityLabel = "New voice message" + result.isAccessibilityElement = true return result }() @@ -68,6 +70,7 @@ final class InputView: UIView, InputViewButtonDelegate, InputTextViewDelegate, M let result = InputViewButton(icon: #imageLiteral(resourceName: "ArrowUp"), isSendButton: true, delegate: self) result.isHidden = true result.accessibilityLabel = "Send message button" + result.isAccessibilityElement = true return result }() @@ -83,6 +86,7 @@ final class InputView: UIView, InputViewButtonDelegate, InputTextViewDelegate, M private lazy var mentionsViewContainer: UIView = { let result: UIView = UIView() result.accessibilityLabel = "Mentions list" + result.isAccessibilityElement = true result.alpha = 0 let backgroundView = UIView() @@ -114,6 +118,7 @@ final class InputView: UIView, InputViewButtonDelegate, InputTextViewDelegate, M let maxWidth = UIScreen.main.bounds.width - 2 * InputViewButton.expandedSize - 2 * Values.smallSpacing - 2 * (Values.mediumSpacing - adjustment) let result = InputTextView(delegate: self, maxWidth: maxWidth) result.accessibilityLabel = "Message input box" + result.isAccessibilityElement = true return result }() diff --git a/Session/Home/HomeVC.swift b/Session/Home/HomeVC.swift index edc7b9817..7675c350d 100644 --- a/Session/Home/HomeVC.swift +++ b/Session/Home/HomeVC.swift @@ -109,6 +109,7 @@ final class HomeVC: BaseVC, UITableViewDataSource, UITableViewDelegate, SeedRemi let button = UIButton() button.accessibilityLabel = "New conversation button" + button.isAccessibilityElement = true button.clipsToBounds = true button.setImage( UIImage(named: "Plus")? @@ -466,6 +467,7 @@ final class HomeVC: BaseVC, UITableViewDataSource, UITableViewDelegate, SeedRemi let profilePictureSize = Values.verySmallProfilePictureSize let profilePictureView = ProfilePictureView() profilePictureView.accessibilityLabel = "User settings" + profilePictureView.isAccessibilityElement = true profilePictureView.size = profilePictureSize profilePictureView.update( publicKey: getUserHexEncodedPublicKey(), @@ -521,6 +523,8 @@ final class HomeVC: BaseVC, UITableViewDataSource, UITableViewDelegate, SeedRemi case .messageRequests: let threadViewModel: SessionThreadViewModel = section.elements[indexPath.row] let cell: MessageRequestsCell = tableView.dequeue(type: MessageRequestsCell.self, for: indexPath) + cell.accessibilityIdentifier = "Message requests banner" + cell.isAccessibilityElement = true cell.update(with: Int(threadViewModel.threadUnreadCount ?? 0)) return cell diff --git a/Session/Home/Message Requests/MessageRequestsViewController.swift b/Session/Home/Message Requests/MessageRequestsViewController.swift index b64ccfdc7..4d6bada96 100644 --- a/Session/Home/Message Requests/MessageRequestsViewController.swift +++ b/Session/Home/Message Requests/MessageRequestsViewController.swift @@ -311,6 +311,8 @@ class MessageRequestsViewController: BaseVC, UITableViewDelegate, UITableViewDat case .threads: let threadViewModel: SessionThreadViewModel = section.elements[indexPath.row] let cell: FullConversationCell = tableView.dequeue(type: FullConversationCell.self, for: indexPath) + cell.accessibilityIdentifier = "Message request" + cell.isAccessibilityElement = true cell.update(with: threadViewModel) return cell diff --git a/Session/Home/New Conversation/NewConversationVC.swift b/Session/Home/New Conversation/NewConversationVC.swift index 620f570d5..0e739dbfe 100644 --- a/Session/Home/New Conversation/NewConversationVC.swift +++ b/Session/Home/New Conversation/NewConversationVC.swift @@ -16,7 +16,8 @@ final class NewConversationVC: BaseVC, ThemedNavigation, UITableViewDelegate, UI private lazy var newDMButton: NewConversationButton = { let result = NewConversationButton(icon: #imageLiteral(resourceName: "Message"), title: "vc_create_private_chat_title".localized()) - result.accessibilityLabel = "New direct message" + result.accessibilityIdentifier = "New direct message" + result.isAccessibilityElement = true return result }() @@ -24,6 +25,7 @@ final class NewConversationVC: BaseVC, ThemedNavigation, UITableViewDelegate, UI private lazy var newGroupButton: NewConversationButton = { let result = NewConversationButton(icon: #imageLiteral(resourceName: "Group"), title: "vc_create_closed_group_title".localized()) result.accessibilityLabel = "Create group" + result.isAccessibilityElement = true return result }() diff --git a/Session/Home/New Conversation/NewDMVC.swift b/Session/Home/New Conversation/NewDMVC.swift index 83efc25bd..a98af6d99 100644 --- a/Session/Home/New Conversation/NewDMVC.swift +++ b/Session/Home/New Conversation/NewDMVC.swift @@ -382,13 +382,15 @@ private final class EnterPublicKeyVC: UIViewController { ) result.alpha = (isKeyboardShowing ? 1 : 0) result.isHidden = !isKeyboardShowing - + result.accessibilityLabel = "Next" + result.isAccessibilityElement = true return result }() private lazy var nextButton: SessionButton = { let result = SessionButton(style: .bordered, size: .large) result.accessibilityLabel = "Next" + result.isAccessibilityElement = true result.setTitle("next".localized(), for: .normal) result.isEnabled = false result.addTarget(self, action: #selector(startNewDMIfPossible), for: .touchUpInside) diff --git a/Session/Onboarding/DisplayNameVC.swift b/Session/Onboarding/DisplayNameVC.swift index 8b83d7416..cf0fc7028 100644 --- a/Session/Onboarding/DisplayNameVC.swift +++ b/Session/Onboarding/DisplayNameVC.swift @@ -16,6 +16,7 @@ final class DisplayNameVC: BaseVC { private lazy var displayNameTextField: TextField = { let result = TextField(placeholder: "vc_display_name_text_field_hint".localized()) result.accessibilityLabel = "Enter display name" + result.isAccessibilityElement = true result.themeBorderColor = .textPrimary return result diff --git a/Session/Onboarding/RegisterVC.swift b/Session/Onboarding/RegisterVC.swift index a89fda8f1..e99dc4e2b 100644 --- a/Session/Onboarding/RegisterVC.swift +++ b/Session/Onboarding/RegisterVC.swift @@ -18,6 +18,7 @@ final class RegisterVC : BaseVC { result.font = Fonts.spaceMono(ofSize: isIPhone5OrSmaller ? Values.mediumFontSize : 20) result.themeTextColor = .textPrimary result.accessibilityLabel = "Session ID" + result.isAccessibilityElement = true result.lineBreakMode = .byCharWrapping result.numberOfLines = 0 @@ -26,6 +27,8 @@ final class RegisterVC : BaseVC { private lazy var copyPublicKeyButton: SessionButton = { let result = SessionButton(style: .bordered, size: .large) + result.accessibilityLabel = "Copy" + result.isAccessibilityElement = true result.setTitle("copy".localized(), for: .normal) result.addTarget(self, action: #selector(copyPublicKey), for: .touchUpInside) @@ -168,6 +171,8 @@ final class RegisterVC : BaseVC { private func updatePublicKeyLabel() { let hexEncodedPublicKey = x25519KeyPair.hexEncodedPublicKey + publicKeyLabel.accessibilityLabel = hexEncodedPublicKey + publicKeyLabel.accessibilityIdentifier = "Session ID generated" let characterCount = hexEncodedPublicKey.count var count = 0 let limit = 32 @@ -203,6 +208,8 @@ final class RegisterVC : BaseVC { @objc private func copyPublicKey() { UIPasteboard.general.string = x25519KeyPair.hexEncodedPublicKey copyPublicKeyButton.isUserInteractionEnabled = false + copyPublicKeyButton.accessibilityLabel = "Copy session id" + copyPublicKeyButton.isAccessibilityElement = true UIView.transition(with: copyPublicKeyButton, duration: 0.25, options: .transitionCrossDissolve, animations: { self.copyPublicKeyButton.setTitle("copied".localized(), for: .normal) }, completion: nil) diff --git a/Session/Onboarding/SeedReminderView.swift b/Session/Onboarding/SeedReminderView.swift index ec98036c6..83b0034c0 100644 --- a/Session/Onboarding/SeedReminderView.swift +++ b/Session/Onboarding/SeedReminderView.swift @@ -83,6 +83,7 @@ final class SeedReminderView: UIView { // Set up button let button = SessionButton(style: .bordered, size: .small) button.accessibilityLabel = "Continue" + button.isAccessibilityElement = true button.setTitle("continue_2".localized(), for: UIControl.State.normal) button.set(.width, to: 96) button.addTarget(self, action: #selector(handleContinueButtonTapped), for: UIControl.Event.touchUpInside) diff --git a/Session/Onboarding/SeedVC.swift b/Session/Onboarding/SeedVC.swift index 2ae8616e6..c31a42d43 100644 --- a/Session/Onboarding/SeedVC.swift +++ b/Session/Onboarding/SeedVC.swift @@ -46,7 +46,9 @@ final class SeedVC: BaseVC { private lazy var mnemonicLabel: UILabel = { let result = UILabel() - result.accessibilityLabel = "Recovery Phrase" + result.accessibilityIdentifier = "Recovery Phrase" + result.accessibilityLabel = mnemonic + result.isAccessibilityElement = true result.font = Fonts.spaceMono(ofSize: Values.mediumFontSize) result.themeTextColor = .primary result.textAlignment = .center @@ -74,6 +76,7 @@ final class SeedVC: BaseVC { // Set up navigation bar buttons let closeButton = UIBarButtonItem(image: #imageLiteral(resourceName: "X"), style: .plain, target: self, action: #selector(close)) closeButton.accessibilityLabel = "Navigate up" + closeButton.isAccessibilityElement = true closeButton.themeTintColor = .textPrimary navigationItem.leftBarButtonItem = closeButton diff --git a/Session/Settings/SettingsViewModel.swift b/Session/Settings/SettingsViewModel.swift index 023cb1413..26209c0d2 100644 --- a/Session/Settings/SettingsViewModel.swift +++ b/Session/Settings/SettingsViewModel.swift @@ -214,6 +214,7 @@ class SettingsViewModel: SessionTableViewModel