Member label VoiceOver support

This commit is contained in:
kate-signal 2026-02-03 13:02:31 -05:00 committed by GitHub
parent 3601bb4930
commit f741f6fc16
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 42 additions and 1 deletions

View File

@ -426,6 +426,10 @@ struct CVItemModelBuilder: CVItemBuilding {
memberLabel = memberLabel?
.components(separatedBy: .whitespaces)
.joined(separator: SignalSymbol.LeadingCharacter.nonBreakingSpace.rawValue)
if let memberLabel {
itemViewState.accessibilityAuthorName = authorName + "," + memberLabel
}
}
if shouldShowSenderName {

View File

@ -532,6 +532,10 @@ struct ConversationHeaderBuilder {
memberLabelLabel.numberOfLines = 0
memberLabelLabel.highlightRange = NSRange(location: 0, length: (label as NSString).length)
memberLabelLabel.highlightFont = .dynamicTypeSubheadlineClamped
memberLabelLabel.axLabelPrefix = OWSLocalizedString(
"MEMBER_LABEL_AX_PREFIX",
comment: "Accessibility prefix for member labels.",
)
subviews.append(memberLabelLabel)
hasSubtitleLabel = true

View File

@ -4996,6 +4996,9 @@
/* Label for an action to add a member label */
"MEMBER_LABEL_ADD" = "Add a Member Label";
/* Accessibility prefix for member labels. */
"MEMBER_LABEL_AX_PREFIX" = "Member label: ";
/* Heading shown above the preview of a message bubble with the edited member label. */
"MEMBER_LABEL_PREVIEW_HEADING" = "Preview";

View File

@ -13,6 +13,7 @@ import SignalServiceKit
public class CVCapsuleLabel: UILabel {
public var highlightRange: NSRange?
public var highlightFont: UIFont?
public var axLabelPrefix: String?
private static let horizontalInset: CGFloat = 6
private static let verticalInset: CGFloat = 1
@ -94,4 +95,14 @@ public class CVCapsuleLabel: UILabel {
height: size.height + Self.verticalInset * 2,
)
}
override public var accessibilityLabel: String? {
get {
if let axLabelPrefix, let text = self.text {
return axLabelPrefix + text
}
return super.accessibilityLabel
}
set { super.accessibilityLabel = newValue }
}
}

View File

@ -240,6 +240,10 @@ public class ContactCellView: ManualStackView {
memberLabelLabel.numberOfLines = 0
memberLabelLabel.highlightRange = NSRange(location: 0, length: (memberLabel.label as NSString).length)
memberLabelLabel.highlightFont = .dynamicTypeCaption1Clamped
memberLabelLabel.axLabelPrefix = OWSLocalizedString(
"MEMBER_LABEL_AX_PREFIX",
comment: "Accessibility prefix for member labels.",
)
textStackSubviews.append(memberLabelLabel)
let memberLabelSize = memberLabelLabel.highlightLabelSize()

View File

@ -765,6 +765,14 @@ open class InteractiveSheetViewController: OWSViewController {
isInInteractiveTransition = false
panningScrollView?.showsVerticalScrollIndicator = true
}
override public func accessibilityPerformEscape() -> Bool {
if presentingViewController != nil {
dismiss(animated: true)
return true
}
return super.accessibilityPerformEscape()
}
}
// MARK: -

View File

@ -182,7 +182,7 @@ public extension ProfileDetailLabel {
},
)
}
return ProfileDetailLabel(
let detailLabelView = ProfileDetailLabel(
title: label,
icon: .memberLabel,
font: .dynamicTypeBody,
@ -191,6 +191,13 @@ public extension ProfileDetailLabel {
tapAction()
},
)
detailLabelView.isAccessibilityElement = true
detailLabelView.accessibilityLabel = OWSLocalizedString(
"MEMBER_LABEL_AX_PREFIX",
comment: "Accessibility prefix for member labels.",
) + label
return detailLabelView
}
static func verified(