Skip to content

Commit d929eee

Browse files
SahilSainiYMLMark Pospesel
andauthored
[CM-1260] Add trait for better accessibility. (#11)
* [UPDATE] removed localisation and extra string methods [OTHER] updated test cases * Remove unusued localization * Lower Swift tools version for backwards compatibility with more versions of Xcode * [UPDATE] added new test cases * [UPDATE] test maximum [UPDATE] test case update --------- Co-authored-by: Mark Pospesel <[email protected]>
1 parent 5c53347 commit d929eee

File tree

5 files changed

+39
-41
lines changed

5 files changed

+39
-41
lines changed

Package.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
// swift-tools-version: 5.7
1+
// swift-tools-version: 5.5
22
// The swift-tools-version declares the minimum version of Swift required to build this package.
33

44
import PackageDescription
55

66
let package = Package(
77
name: "YStepper",
8-
defaultLocalization: "en",
98
platforms: [
109
.iOS(.v14)
1110
],

Sources/YStepper/Assets/Strings/en.lproj/Localizable.strings

Lines changed: 0 additions & 12 deletions
This file was deleted.

Sources/YStepper/SwiftUI/Views/Stepper.swift

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,11 @@ extension Stepper: View {
112112
getShape()
113113
.background(getShapeWithoutStroke().foregroundColor(Color(appearance.backgroundColor)))
114114
)
115+
.accessibilityElement(children: .combine)
116+
.accessibilityValue(getValueText())
117+
.accessibilityAdjustableAction { direction in
118+
accessibilityAction(direction: direction)
119+
}
115120
}
116121

117122
@ViewBuilder
@@ -122,7 +127,7 @@ extension Stepper: View {
122127
Color(appearance.textStyle.textColor).opacity(isIncrementDisabled ? 0.5 : 1)
123128
)
124129
}
125-
.accessibilityLabel(StepperControl.Strings.incrementA11yButton.localized)
130+
.accessibilityHidden(true)
126131
.disabled(isIncrementDisabled)
127132
}
128133

@@ -134,7 +139,7 @@ extension Stepper: View {
134139
Color(appearance.textStyle.textColor).opacity(isDecrementDisabled ? 0.5 : 1)
135140
)
136141
}
137-
.accessibilityLabel(getAccessibilityText())
142+
.accessibilityHidden(true)
138143
.disabled(isDecrementDisabled)
139144
}
140145

@@ -148,7 +153,7 @@ extension Stepper: View {
148153
label.textColor = appearance.textStyle.textColor
149154
}
150155
.frame(width: getStringSize(sizeCategory).width)
151-
.accessibilityLabel(getAccessibilityLabelText())
156+
.accessibilityHidden(true)
152157
}
153158

154159
@ViewBuilder
@@ -218,13 +223,6 @@ extension Stepper {
218223
String(format: "%.\(decimalPlaces)f", value)
219224
}
220225

221-
func getAccessibilityText() -> String {
222-
if shouldShowDelete {
223-
return StepperControl.Strings.deleteA11yButton.localized
224-
}
225-
return StepperControl.Strings.decrementA11yButton.localized
226-
}
227-
228226
func updateCurrentValue(newValue: Double) {
229227
if newValue < valueObserver.minimumValue {
230228
valueObserver.value = valueObserver.minimumValue
@@ -257,8 +255,15 @@ extension Stepper {
257255
)
258256
}
259257

260-
func getAccessibilityLabelText() -> String {
261-
StepperControl.Strings.valueA11yLabel.localized + getValueText()
258+
func accessibilityAction(direction: AccessibilityAdjustmentDirection) {
259+
switch direction {
260+
case .increment:
261+
buttonAction(buttonType: .increment)
262+
case .decrement:
263+
buttonAction(buttonType: .decrement)
264+
@unknown default:
265+
break
266+
}
262267
}
263268
}
264269

Sources/YStepper/UIKit/StepperControl.swift

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -88,16 +88,6 @@ extension StepperControl {
8888
case decrement = "minus"
8989
case delete = "trash"
9090
}
91-
92-
/// Collection of Strings
93-
enum Strings: String, Localizable, CaseIterable {
94-
case incrementA11yButton = "Increment_Button_A11y_label"
95-
case decrementA11yButton = "Decrement_Button_A11y_label"
96-
case deleteA11yButton = "Delete_Button_A11y_label"
97-
case valueA11yLabel = "Value_A11y_label"
98-
99-
static var bundle: Bundle { .module }
100-
}
10191
}
10292

10393
extension StepperControl: StepperDelegate {

Tests/YStepperTests/Views/StepperTests.swift

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -231,12 +231,28 @@ final class StepperTests: XCTestCase {
231231
XCTAssertNotNil(Stepper_Previews.previews)
232232
}
233233

234-
func testGetAccessibilityText() {
235-
var sut = makeSUT()
236-
XCTAssertEqual(sut.getAccessibilityText(), StepperControl.Strings.deleteA11yButton.localized)
234+
func test_accessibilityIncrement_IncrementsValue() {
235+
let sut = makeSUT(maxValue: 2)
236+
sut.accessibilityAction(direction: .increment)
237+
sut.accessibilityAction(direction: .increment)
238+
XCTAssertEqual(sut.value, sut.minimumValue + 2 * sut.stepValue)
239+
XCTAssertEqual(sut.value, sut.maximumValue)
240+
sut.accessibilityAction(direction: .increment)
241+
// It should still just be the maximum value
242+
XCTAssertEqual(sut.value, sut.maximumValue)
243+
}
244+
245+
func test_accessibilityDecrement_decrementsValue() {
246+
let sut = makeSUT()
247+
sut.accessibilityAction(direction: .increment)
248+
XCTAssertEqual(sut.value, sut.minimumValue + sut.stepValue)
237249

238-
sut.appearance.showDeleteImage = false
239-
XCTAssertEqual(sut.getAccessibilityText(), StepperControl.Strings.decrementA11yButton.localized)
250+
sut.accessibilityAction(direction: .decrement)
251+
XCTAssertEqual(sut.value, sut.minimumValue)
252+
253+
sut.accessibilityAction(direction: .decrement)
254+
// It should still just be the minimum value
255+
XCTAssertEqual(sut.value, sut.minimumValue)
240256
}
241257
}
242258

0 commit comments

Comments
 (0)