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)
|
leftLabel.setContentHuggingPriority(.defaultHigh, for: .horizontal)
|
||||||
addMolecule(stack)
|
addMolecule(stack)
|
||||||
stack.restack()
|
stack.restack()
|
||||||
updateAccessibilityLabel()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------
|
//---------------------------------------------------
|
||||||
@ -76,56 +75,36 @@ import Foundation
|
|||||||
// MARK: - Accessibility
|
// MARK: - Accessibility
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
|
||||||
|
func getAccessibilityMessage() -> String {
|
||||||
|
guard let leftLabel = leftLabel.text else {
|
||||||
|
return eyebrowHeadlineBodyLink.getAccessibilityMessage()
|
||||||
|
}
|
||||||
|
return leftLabel + ", " + eyebrowHeadlineBodyLink.getAccessibilityMessage()
|
||||||
|
}
|
||||||
|
|
||||||
func updateAccessibilityLabel() {
|
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
|
let linkShowing = eyebrowHeadlineBodyLink.link.titleLabel?.text?.count ?? 0 > 0
|
||||||
isAccessibilityElement = !linkShowing
|
isAccessibilityElement = !linkShowing
|
||||||
|
accessibilityTraits = (isAccessibilityElement && accessoryView != nil) ? .button : .none
|
||||||
eyebrowHeadlineBodyLink.link.isAccessibilityElement = linkShowing
|
eyebrowHeadlineBodyLink.link.isAccessibilityElement = linkShowing
|
||||||
|
|
||||||
if !linkShowing {
|
if !linkShowing {
|
||||||
// Make whole cell focusable if no link.
|
// 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 {
|
} 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 {
|
if let leftLabelText = leftLabel.text, !leftLabelText.isEmpty {
|
||||||
elements.append(leftLabel)
|
elements.append(leftLabel)
|
||||||
}
|
}
|
||||||
|
if let otherElements = eyebrowHeadlineBodyLink.getAccessibilityElements() {
|
||||||
if let eyeBrowText = eyebrowHeadlineBodyLink.eyebrow.text, !eyeBrowText.isEmpty {
|
elements.append(otherElements)
|
||||||
elements.append(eyebrowHeadlineBodyLink.eyebrow)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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
|
accessibilityElements = elements
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -69,4 +69,44 @@ import UIKit
|
|||||||
open override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
open override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||||
return 65
|
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