Skip to content

Commit 03f8099

Browse files
committed
[A11Y] HTML text traits
1 parent 5c24e70 commit 03f8099

File tree

3 files changed

+11
-2
lines changed

3 files changed

+11
-2
lines changed

Sample/Sample/Examples/HTMLTextView.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,14 @@ struct HTMLTextView: View {
1313
RoundedCorner(radius: 12)
1414
.strokeBorder(.tertiary)
1515
}
16+
.htmlAccessibilityTraits(.header)
1617
HTMLText(html: "<h2>First test</h2>")
1718
.padding()
1819
.background {
1920
RoundedCorner(radius: 12)
2021
.strokeBorder(.tertiary)
2122
}
23+
.htmlAccessibilityTraits(.header)
2224
HTMLText(html: "<p>A <b>paragraph</b>. It's longer, and wider, and better. It should be on 2 lines, hopefully. </p>")
2325
.padding()
2426
.background {
@@ -31,6 +33,7 @@ struct HTMLTextView: View {
3133
RoundedCorner(radius: 12)
3234
.strokeBorder(.tertiary)
3335
}
36+
.htmlAccessibilityTraits(.header)
3437
HTMLText(html: "<i>This is a lonely italic line. </i>")
3538
.padding()
3639
.background {

Sources/SwiftUI-Utils/View/HTMLText/HTMLText+Environment.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ extension EnvironmentValues {
77
@Entry var htmlFont: HTMLFont = .system
88
@Entry var htmlLineSpacing: CGFloat?
99
@Entry var htmlLineBreakMode: NSLineBreakMode = .byTruncatingTail
10+
@Entry var htmlAccessibilityTraits: UIAccessibilityTraits = .staticText
1011
}
1112

1213
extension View {
@@ -34,4 +35,8 @@ extension View {
3435
public func htmlLineBreakMode(_ mode: NSLineBreakMode) -> some View {
3536
environment(\.htmlLineBreakMode, mode)
3637
}
38+
39+
public func htmlAccessibilityTraits(_ traits: UIAccessibilityTraits) -> some View {
40+
environment(\.htmlAccessibilityTraits, traits)
41+
}
3742
}

Sources/SwiftUI-Utils/View/HTMLText/HTMLText.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public struct HTMLText: UIViewRepresentable {
2424
@Environment(\.htmlFont) var font
2525
@Environment(\.htmlLineSpacing) var lineSpacing
2626
@Environment(\.htmlLineBreakMode) var lineBreakMode
27+
@Environment(\.htmlAccessibilityTraits) var accessibilityTraits
2728

2829
let html: String
2930

@@ -42,7 +43,7 @@ public struct HTMLText: UIViewRepresentable {
4243
view.textContainer.lineBreakMode = lineBreakMode
4344
view.textContainer.maximumNumberOfLines = lineLimit ?? 0
4445
view.textContainerInset = .zero
45-
view.accessibilityTraits = .staticText
46+
view.accessibilityTraits = accessibilityTraits
4647
view.delegate = context.coordinator
4748
return view
4849
}
@@ -128,7 +129,7 @@ extension HTMLText {
128129
.characterEncoding: String.Encoding.utf8.rawValue,
129130
]
130131
let attributes: [NSAttributedString.Key: Any] = [
131-
.kern: kerning
132+
.kern: kerning,
132133
]
133134

134135
let attributedString = try NSMutableAttributedString(data: data, options: options, documentAttributes: nil)

0 commit comments

Comments
 (0)