From b931c90b7dda6c18c736fbcee0d0f0830997f2c5 Mon Sep 17 00:00:00 2001 From: Ryo Aoyama Date: Thu, 5 Nov 2020 20:37:45 +0900 Subject: [PATCH] Accessibility changes --- .../AccessibilityExamples/ActionExample.swift | 48 +++++++++++-------- .../ContainerExample.swift | 7 +++ .../AccessibilityExamples/ImageExample.swift | 3 ++ .../RepresentableExample.swift | 4 ++ .../StandardControlExample.swift | 2 + .../AccessibilityExamples/TextExample.swift | 5 +- 6 files changed, 46 insertions(+), 23 deletions(-) diff --git a/Example/SampleApp/AccessibilityExamples/ActionExample.swift b/Example/SampleApp/AccessibilityExamples/ActionExample.swift index ca5454c..6d74a24 100644 --- a/Example/SampleApp/AccessibilityExamples/ActionExample.swift +++ b/Example/SampleApp/AccessibilityExamples/ActionExample.swift @@ -51,33 +51,39 @@ public struct ActionExample: View { public var body: some View { VStack(alignment: .leading) { - Text("Element with default action") - - AccessibilityElementView(color: defaultActionColor, text: Text("Default")) - .accessibilityLabel(Text("Element with default action")) - .accessibilityAddTraits(.isButton) - .accessibilityAction { - print("Default action fired!") - self.defaultActionFired = true - } + VStack(alignment: .leading) { + Text("Element with default action").accessibilityHidden(true) + AccessibilityElementView(color: defaultActionColor, text: Text("Default")) + } + .accessibilityLabel(Text("Element with default action")) + .accessibilityAddTraits(.isButton) + .accessibilityAction { + print("Default action fired!") + self.defaultActionFired = true + } + .accessibilityElement(children: .combine) LargeSpacer() - Text("Element with custom actions") - - AccessibilityElementView(color: customActionColor, text: Text("Custom")) - .accessibilityLabel(Text("Element with custom actions")) - .accessibilityAction(named: Text("Custom Action 1"), customAction1) - .accessibilityAction(named: Text("Custom Action 2"), customAction2) + VStack(alignment: .leading) { + Text("Element with custom actions").accessibilityHidden(true) + AccessibilityElementView(color: customActionColor, text: Text("Custom")) + } + .accessibilityLabel(Text("Element with custom actions")) + .accessibilityAction(named: Text("Custom Action 1"), customAction1) + .accessibilityAction(named: Text("Custom Action 2"), customAction2) + .accessibilityElement(children: .combine) LargeSpacer() - Text("Custom adjustment action element") - - AccessibilityElementView(color: .green, text: Text("Adjustable: \(incrementIndex)")) - .accessibilityLabel(Text("Custom increment element")) - .accessibilityValue(Text(verbatim: "\(incrementIndex)")) - .accessibilityAdjustableAction(adjustAction) + VStack(alignment: .leading) { + Text("Custom adjustment action element").accessibilityHidden(true) + AccessibilityElementView(color: .green, text: Text("Adjustable: \(incrementIndex)")) + } + .accessibilityLabel(Text("Custom adjustment action element")) + .accessibilityValue(Text(verbatim: "\(incrementIndex)")) + .accessibilityAdjustableAction(adjustAction) + .accessibilityElement(children: .combine) } } diff --git a/Example/SampleApp/AccessibilityExamples/ContainerExample.swift b/Example/SampleApp/AccessibilityExamples/ContainerExample.swift index 100088f..7f75f52 100644 --- a/Example/SampleApp/AccessibilityExamples/ContainerExample.swift +++ b/Example/SampleApp/AccessibilityExamples/ContainerExample.swift @@ -16,10 +16,17 @@ public struct ContainerExample: View { // Create a stack with multiple toggles and a label inside. VStack(alignment: .leading) { Text("Grouping Container") + .accessibilityAddTraits(.isHeader) + .accessibilitySortPriority(0) + Toggle(isOn: $onState) { Text("Toggle 1") } + .accessibilitySortPriority(2) Toggle(isOn: $onState) { Text("Toggle 2") } + .accessibilitySortPriority(1) Toggle(isOn: $onState) { Text("Toggle 3") } + .accessibilitySortPriority(3) Toggle(isOn: $onState) { Text("Toggle 4") } + .accessibilitySortPriority(4) } .padding() .background(Color.white) diff --git a/Example/SampleApp/AccessibilityExamples/ImageExample.swift b/Example/SampleApp/AccessibilityExamples/ImageExample.swift index 138bba7..726af02 100644 --- a/Example/SampleApp/AccessibilityExamples/ImageExample.swift +++ b/Example/SampleApp/AccessibilityExamples/ImageExample.swift @@ -36,6 +36,7 @@ public struct ImageExample: View { public var body: some View { VStack(alignment: .leading) { Text("Unlabeled Image") + .accessibilityHidden(true) // This image creates an accessibility element, but has no label. ExampleImageView(Image("dot_green")) @@ -43,6 +44,7 @@ public struct ImageExample: View { LargeSpacer() Text("Labeled Images") + .accessibilityHidden(true) HStack { // This image uses an explicit accessibility label via the API. @@ -61,6 +63,7 @@ public struct ImageExample: View { LargeSpacer() Text("Decorative Image") + .accessibilityHidden(true) // This image is explicitly marked decorative, so it does not // create an accessibility element. diff --git a/Example/SampleApp/AccessibilityExamples/RepresentableExample.swift b/Example/SampleApp/AccessibilityExamples/RepresentableExample.swift index 21f1148..98b3f6d 100644 --- a/Example/SampleApp/AccessibilityExamples/RepresentableExample.swift +++ b/Example/SampleApp/AccessibilityExamples/RepresentableExample.swift @@ -12,6 +12,7 @@ public struct RepresentableExample: View { public var body: some View { VStack(alignment: .leading) { Text("Element with representable view") + .accessibilityLabel("representable view") // You can use SwiftUI's Accessibility API to customize to accessibility of // AppKit or UIKit represented elements @@ -19,15 +20,18 @@ public struct RepresentableExample: View { .frame(width: 128, height: 48) .accessibilityLabel(Text("representable view accessibility label")) .accessibilityValue(Text("representable view accessibility value")) + .accessibilityHint(Text("representable view accessibility hint")) LargeSpacer() Text("Element with representable view controller") + .accessibilityLabel("representable view controller") RepresentableViewController() .frame(width: 128, height: 48) .accessibilityLabel(Text("representable view controller accessibility label")) .accessibilityValue(Text("representable view controller accessibility value")) + .accessibilityHint(Text("representable view accessibility hint")) } } diff --git a/Example/SampleApp/AccessibilityExamples/StandardControlExample.swift b/Example/SampleApp/AccessibilityExamples/StandardControlExample.swift index a3da579..f26ffef 100644 --- a/Example/SampleApp/AccessibilityExamples/StandardControlExample.swift +++ b/Example/SampleApp/AccessibilityExamples/StandardControlExample.swift @@ -16,6 +16,7 @@ public struct StandardControlExample: View { Button(action: {}) { Text("Button with hint & identifier") } + .accessibilityRemoveTraits(.isButton) .accessibilityHint(Text("Accessibility hint for first button")) .accessibilityIdentifier("First Button") @@ -25,6 +26,7 @@ public struct StandardControlExample: View { Text("Toggle with hint") } .accessibilityHint(Text("Accessibility hint for toggle")) + .disabled(true) LargeSpacer() diff --git a/Example/SampleApp/AccessibilityExamples/TextExample.swift b/Example/SampleApp/AccessibilityExamples/TextExample.swift index d4fb434..92861ad 100644 --- a/Example/SampleApp/AccessibilityExamples/TextExample.swift +++ b/Example/SampleApp/AccessibilityExamples/TextExample.swift @@ -17,6 +17,7 @@ public struct TextExample: View { Text("Relabeled Text") .accessibilityLabel(Text("Accessibility Label")) + .accessibilityAddTraits(.isStaticText) LargeSpacer() @@ -30,9 +31,9 @@ public struct TextExample: View { Text("Stacked Multiple Line Text Line 1") Text("This is on another line") } - .accessibilityElement(children: .combine) + .accessibilityElement(children: .contain) - Text("Simple Multiple Line Text\nThis is on another line") + Text("Simple Multiple Line Text\nThis is on second line\nThis is on third line") .lineLimit(nil) LargeSpacer()