diff --git a/WordPressAuthenticator.podspec b/WordPressAuthenticator.podspec
index 661e2650c..cd5adddaf 100644
--- a/WordPressAuthenticator.podspec
+++ b/WordPressAuthenticator.podspec
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = "WordPressAuthenticator"
- s.version = "1.10.5-beta.2"
+ s.version = "1.10.5-beta.3"
s.summary = "WordPressAuthenticator implements an easy and elegant way to authenticate your WordPress Apps."
s.description = <<-DESC
diff --git a/WordPressAuthenticator/Signin/Login.storyboard b/WordPressAuthenticator/Signin/Login.storyboard
index 036146211..77ca59996 100644
--- a/WordPressAuthenticator/Signin/Login.storyboard
+++ b/WordPressAuthenticator/Signin/Login.storyboard
@@ -66,6 +66,7 @@
+
@@ -1450,6 +1451,9 @@
+
+
+
diff --git a/WordPressAuthenticator/Signin/LoginPrologueLoginMethodViewController.swift b/WordPressAuthenticator/Signin/LoginPrologueLoginMethodViewController.swift
index cd9410360..acadc0df4 100644
--- a/WordPressAuthenticator/Signin/LoginPrologueLoginMethodViewController.swift
+++ b/WordPressAuthenticator/Signin/LoginPrologueLoginMethodViewController.swift
@@ -13,6 +13,9 @@ class LoginPrologueLoginMethodViewController: NUXViewController {
open var selfHostedTapped: (() -> Void)?
open var appleTapped: (() -> Void)?
+ /// The big transparent (dismiss) button behind the buttons
+ @IBOutlet private weak var dismissButton: UIButton!
+
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
super.prepare(for: segue, sender: sender)
@@ -24,6 +27,7 @@ class LoginPrologueLoginMethodViewController: NUXViewController {
override func viewDidLoad() {
super.viewDidLoad()
configureButtonVC()
+ configureForAccessibility()
}
override func viewWillAppear(_ animated: Bool) {
@@ -85,4 +89,23 @@ class LoginPrologueLoginMethodViewController: NUXViewController {
appleTapped?()
}
+ // MARK: - Accessibility
+
+ private func configureForAccessibility() {
+ dismissButton.accessibilityLabel = NSLocalizedString("Dismiss", comment: "Accessibility label for the transparent space above the login dialog which acts as a button to dismiss the dialog.")
+
+ // Ensure that the first button (in buttonViewController) is automatically selected by
+ // VoiceOver instead of the dismiss button.
+ if buttonViewController?.isViewLoaded == true, let buttonsView = buttonViewController?.view {
+ view.accessibilityElements = [
+ buttonsView,
+ dismissButton
+ ]
+ }
+ }
+
+ override func accessibilityPerformEscape() -> Bool {
+ dismiss(animated: true)
+ return true
+ }
}
diff --git a/WordPressAuthenticator/Signin/LoginPrologueSignupMethodViewController.swift b/WordPressAuthenticator/Signin/LoginPrologueSignupMethodViewController.swift
index 9df8f60e6..beac431ba 100644
--- a/WordPressAuthenticator/Signin/LoginPrologueSignupMethodViewController.swift
+++ b/WordPressAuthenticator/Signin/LoginPrologueSignupMethodViewController.swift
@@ -14,6 +14,9 @@ class LoginPrologueSignupMethodViewController: NUXViewController {
open var googleTapped: (() -> Void)?
open var appleTapped: (() -> Void)?
+ /// The big transparent (dismiss) button behind the buttons
+ @IBOutlet private weak var dismissButton: UIButton!
+
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
super.prepare(for: segue, sender: sender)
@@ -25,6 +28,7 @@ class LoginPrologueSignupMethodViewController: NUXViewController {
override func viewDidLoad() {
super.viewDidLoad()
configureButtonVC()
+ configureForAccessibility()
}
override func viewWillAppear(_ animated: Bool) {
@@ -82,8 +86,7 @@ class LoginPrologueSignupMethodViewController: NUXViewController {
}
@IBAction func dismissTapped() {
- WordPressAuthenticator.track(.signupCancelled)
- dismiss(animated: true)
+ trackCancellationAndThenDismiss()
}
@objc func handleAppleButtonTapped() {
@@ -92,4 +95,29 @@ class LoginPrologueSignupMethodViewController: NUXViewController {
dismiss(animated: true)
appleTapped?()
}
+
+ private func trackCancellationAndThenDismiss() {
+ WordPressAuthenticator.track(.signupCancelled)
+ dismiss(animated: true)
+ }
+
+ // MARK: - Accessibility
+
+ private func configureForAccessibility() {
+ dismissButton.accessibilityLabel = NSLocalizedString("Dismiss", comment: "Accessibility label for the transparent space above the signup dialog which acts as a button to dismiss the dialog.")
+
+ // Ensure that the first button (in buttonViewController) is automatically selected by
+ // VoiceOver instead of the dismiss button.
+ if buttonViewController?.isViewLoaded == true, let buttonsView = buttonViewController?.view {
+ view.accessibilityElements = [
+ buttonsView,
+ dismissButton
+ ]
+ }
+ }
+
+ override func accessibilityPerformEscape() -> Bool {
+ trackCancellationAndThenDismiss()
+ return true
+ }
}