Skip to content

Commit dd88868

Browse files
committed
Rename responder status to something clearer
1 parent 5cf7d40 commit dd88868

File tree

4 files changed

+39
-24
lines changed

4 files changed

+39
-24
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# Changelog
22

3+
## 0.3.0
4+
5+
### Changed
6+
7+
* Remove RunLoop tick when updating first responder state
8+
* Replace `isEditing` binding with `firstResponderState` binding.
9+
310
## 0.2.0
411

512
### Added

Demo Project/ResponsiveTextFieldDemo/ContentView.swift

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ struct ContentView: View {
1717
var password: String = ""
1818

1919
@State
20-
var emailResponderState: ResponsiveTextField.FirstResponderState = .become
20+
var emailResponderState: ResponsiveTextField.FirstResponderState = .shouldBecomeFirstResponder
2121

2222
@State
23-
var passwordResponderState: ResponsiveTextField.FirstResponderState = .resigned
23+
var passwordResponderState: ResponsiveTextField.FirstResponderState = .notFirstResponder
2424

2525
@State
2626
var isEnabled: Bool = true
@@ -30,15 +30,23 @@ struct ContentView: View {
3030

3131
var isEditingEmail: Binding<Bool> {
3232
Binding(
33-
get: { emailResponderState == .current },
34-
set: { emailResponderState = $0 ? .become : .resign }
33+
get: { emailResponderState == .isFirstResponder },
34+
set: {
35+
emailResponderState = $0
36+
? .shouldBecomeFirstResponder
37+
: .shouldResignFirstResponder
38+
}
3539
)
3640
}
3741

3842
var isEditingPassword: Binding<Bool> {
3943
Binding(
40-
get: { passwordResponderState == .current },
41-
set: { passwordResponderState = $0 ? .become : .resign }
44+
get: { passwordResponderState == .isFirstResponder },
45+
set: {
46+
passwordResponderState = $0
47+
? .shouldBecomeFirstResponder
48+
: .shouldResignFirstResponder
49+
}
4250
)
4351
}
4452

@@ -50,7 +58,7 @@ struct ContentView: View {
5058
text: $email,
5159
firstResponderState: $emailResponderState.animation(),
5260
configuration: .email,
53-
handleReturn: { passwordResponderState = .become }
61+
handleReturn: { passwordResponderState = .shouldBecomeFirstResponder }
5462
)
5563
.responsiveKeyboardReturnType(.next)
5664
.responsiveTextFieldTextColor(.blue)
@@ -65,10 +73,10 @@ struct ContentView: View {
6573
firstResponderState: $passwordResponderState.animation(),
6674
isSecure: hidePassword,
6775
configuration: .combine(.password, .lastOfChain),
68-
handleReturn: { passwordResponderState = .resign },
76+
handleReturn: { passwordResponderState = .shouldResignFirstResponder },
6977
handleDelete: {
7078
if $0.isEmpty {
71-
emailResponderState = .become
79+
emailResponderState = .shouldBecomeFirstResponder
7280
}
7381
}
7482
)

Sources/ResponsiveTextField/ResponsiveTextField.swift

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -109,10 +109,10 @@ public struct ResponsiveTextField {
109109
}
110110

111111
public enum FirstResponderState: Equatable {
112-
case resigned
113-
case become
114-
case current
115-
case resign
112+
case notFirstResponder
113+
case shouldBecomeFirstResponder
114+
case isFirstResponder
115+
case shouldResignFirstResponder
116116
}
117117
}
118118

@@ -154,9 +154,9 @@ extension ResponsiveTextField: UIViewRepresentable {
154154
uiView.font = font
155155

156156
switch (uiView.isFirstResponder, firstResponderState.wrappedValue) {
157-
case (true, .resign):
157+
case (true, .shouldResignFirstResponder):
158158
uiView.resignFirstResponder()
159-
case (false, .become):
159+
case (false, .shouldBecomeFirstResponder):
160160
uiView.becomeFirstResponder()
161161
default:
162162
break
@@ -179,11 +179,11 @@ extension ResponsiveTextField: UIViewRepresentable {
179179
}
180180

181181
public func textFieldDidBeginEditing(_ textField: UITextField) {
182-
parent.skippingViewUpdates { self.firstResponderState = .current }
182+
parent.skippingViewUpdates { self.firstResponderState = .isFirstResponder }
183183
}
184184

185185
public func textFieldDidEndEditing(_ textField: UITextField) {
186-
parent.skippingViewUpdates { self.firstResponderState = .resigned }
186+
parent.skippingViewUpdates { self.firstResponderState = .notFirstResponder }
187187
}
188188

189189
public func textFieldShouldReturn(_ textField: UITextField) -> Bool {
@@ -321,7 +321,7 @@ struct ResponsiveTextField_Previews: PreviewProvider {
321321
var text: String = ""
322322

323323
@State
324-
var firstResponderState: ResponsiveTextField.FirstResponderState = .resigned
324+
var firstResponderState: ResponsiveTextField.FirstResponderState = .shouldBecomeFirstResponder
325325

326326
var body: some View {
327327
ResponsiveTextField(

Tests/ResponsiveTextFieldTests/ResponsiveTextFieldTests.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ final class ResponsiveTextFieldTests: XCTestCase {
1515
matching: ResponsiveTextField(
1616
placeholder: "Placeholder Text",
1717
text: .constant(""),
18-
firstResponderState: .constant(.resigned),
18+
firstResponderState: .constant(.notFirstResponder),
1919
isSecure: false,
2020
configuration: .empty
2121
).padding(),
@@ -28,7 +28,7 @@ final class ResponsiveTextFieldTests: XCTestCase {
2828
matching: ResponsiveTextField(
2929
placeholder: "Placeholder Text",
3030
text: .constant("Textfield with some text"),
31-
firstResponderState: .constant(.resigned),
31+
firstResponderState: .constant(.notFirstResponder),
3232
isSecure: false,
3333
configuration: .empty
3434
).padding(),
@@ -41,7 +41,7 @@ final class ResponsiveTextFieldTests: XCTestCase {
4141
matching: ResponsiveTextField(
4242
placeholder: "Placeholder Text",
4343
text: .constant("ssh this is top secret"),
44-
firstResponderState: .constant(.resigned),
44+
firstResponderState: .constant(.notFirstResponder),
4545
isSecure: true,
4646
configuration: .empty
4747
).padding(),
@@ -54,7 +54,7 @@ final class ResponsiveTextFieldTests: XCTestCase {
5454
matching: ResponsiveTextField(
5555
placeholder: "Placeholder Text",
5656
text: .constant("Textfield with some text"),
57-
firstResponderState: .constant(.resigned),
57+
firstResponderState: .constant(.notFirstResponder),
5858
isSecure: false,
5959
configuration: .empty
6060
)
@@ -70,7 +70,7 @@ final class ResponsiveTextFieldTests: XCTestCase {
7070
matching: ResponsiveTextField(
7171
placeholder: "Placeholder Text",
7272
text: .constant("Textfield with some text"),
73-
firstResponderState: .constant(.resigned),
73+
firstResponderState: .constant(.notFirstResponder),
7474
isSecure: false,
7575
configuration: .empty
7676
)
@@ -83,7 +83,7 @@ final class ResponsiveTextFieldTests: XCTestCase {
8383
matching: ResponsiveTextField(
8484
placeholder: "Placeholder Text",
8585
text: .constant("Textfield with some text"),
86-
firstResponderState: .constant(.resigned),
86+
firstResponderState: .constant(.notFirstResponder),
8787
isSecure: false,
8888
configuration: .empty
8989
)

0 commit comments

Comments
 (0)