Update accessibility for numberd left variable
This commit is contained in:
parent
b987bbc2c1
commit
17a14e0634
@ -40,7 +40,6 @@ import Foundation
|
||||
leftLabel.setContentHuggingPriority(.defaultHigh, for: .horizontal)
|
||||
addMolecule(stack)
|
||||
stack.restack()
|
||||
updateAccessibilityLabel()
|
||||
}
|
||||
|
||||
//---------------------------------------------------
|
||||
@ -76,56 +75,36 @@ import Foundation
|
||||
// MARK: - Accessibility
|
||||
//--------------------------------------------------
|
||||
|
||||
func getAccessibilityMessage() -> String {
|
||||
guard let leftLabel = leftLabel.text else {
|
||||
return eyebrowHeadlineBodyLink.getAccessibilityMessage()
|
||||
}
|
||||
return leftLabel + ", " + eyebrowHeadlineBodyLink.getAccessibilityMessage()
|
||||
}
|
||||
|
||||
func updateAccessibilityLabel() {
|
||||
|
||||
var message = ""
|
||||
|
||||
if let leftLabel = leftLabel.text {
|
||||
message += leftLabel + ", "
|
||||
}
|
||||
|
||||
if let eyebrowLabel = eyebrowHeadlineBodyLink.eyebrow.text {
|
||||
message += eyebrowLabel + ", "
|
||||
}
|
||||
|
||||
if let headlineLabel = eyebrowHeadlineBodyLink.headline.text {
|
||||
message += headlineLabel + ", "
|
||||
}
|
||||
|
||||
if let bodyLabel = eyebrowHeadlineBodyLink.body.text {
|
||||
message += bodyLabel
|
||||
}
|
||||
|
||||
|
||||
let linkShowing = eyebrowHeadlineBodyLink.link.titleLabel?.text?.count ?? 0 > 0
|
||||
isAccessibilityElement = !linkShowing
|
||||
accessibilityTraits = (isAccessibilityElement && accessoryView != nil) ? .button : .none
|
||||
eyebrowHeadlineBodyLink.link.isAccessibilityElement = linkShowing
|
||||
|
||||
if !linkShowing {
|
||||
// Make whole cell focusable if no link.
|
||||
accessibilityLabel = message
|
||||
accessibilityLabel = getAccessibilityMessage()
|
||||
accessibilityElements = nil
|
||||
} else if let accessoryView = accessoryView {
|
||||
// Both caret and link. Read all content on caret.
|
||||
accessoryView.accessibilityLabel = getAccessibilityMessage()
|
||||
accessibilityElements = [accessoryView, eyebrowHeadlineBodyLink.link]
|
||||
} else {
|
||||
var elements: [UIView] = []
|
||||
|
||||
// Only link. Manually add accessibility elements to ensure they are read in the right order.
|
||||
var elements: [Any] = []
|
||||
if let leftLabelText = leftLabel.text, !leftLabelText.isEmpty {
|
||||
elements.append(leftLabel)
|
||||
}
|
||||
|
||||
if let eyeBrowText = eyebrowHeadlineBodyLink.eyebrow.text, !eyeBrowText.isEmpty {
|
||||
elements.append(eyebrowHeadlineBodyLink.eyebrow)
|
||||
if let otherElements = eyebrowHeadlineBodyLink.getAccessibilityElements() {
|
||||
elements.append(otherElements)
|
||||
}
|
||||
|
||||
if let headlineText = eyebrowHeadlineBodyLink.headline.text, !headlineText.isEmpty {
|
||||
elements.append(eyebrowHeadlineBodyLink.headline)
|
||||
}
|
||||
|
||||
if let bodyText = eyebrowHeadlineBodyLink.body.text, !bodyText.isEmpty {
|
||||
elements.append(eyebrowHeadlineBodyLink.body)
|
||||
}
|
||||
|
||||
if linkShowing {
|
||||
elements.append(eyebrowHeadlineBodyLink.link)
|
||||
}
|
||||
|
||||
accessibilityElements = elements
|
||||
}
|
||||
}
|
||||
|
||||
@ -69,4 +69,44 @@ import UIKit
|
||||
open override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||
return 65
|
||||
}
|
||||
|
||||
//--------------------------------------------------
|
||||
// MARK: - Accessibility Helpers
|
||||
//--------------------------------------------------
|
||||
|
||||
/// Returns the labels text in one message.
|
||||
func getAccessibilityMessage() -> String {
|
||||
var message = ""
|
||||
|
||||
if let eyebrowLabel = eyebrow.text {
|
||||
message += eyebrowLabel + ", "
|
||||
}
|
||||
|
||||
if let headlineLabel = headline.text {
|
||||
message += headlineLabel + ", "
|
||||
}
|
||||
|
||||
if let bodyLabel = body.text {
|
||||
message += bodyLabel
|
||||
}
|
||||
return message
|
||||
}
|
||||
|
||||
/// Returns an array of the appropriate accessibility elements.
|
||||
func getAccessibilityElements() -> [Any]? {
|
||||
var elements: [UIView] = []
|
||||
if eyebrow.hasText {
|
||||
elements.append(eyebrow)
|
||||
}
|
||||
if headline.hasText {
|
||||
elements.append(headline)
|
||||
}
|
||||
if body.hasText {
|
||||
elements.append(body)
|
||||
}
|
||||
if link.titleLabel?.text?.count ?? 0 > 0 {
|
||||
elements.append(link)
|
||||
}
|
||||
return elements.count > 0 ? elements : nil
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user