Skip to content

Commit 6faa0e5

Browse files
committed
Replace FirstResponderState with Bool. Fixes #1.
1 parent 4fd5d17 commit 6faa0e5

File tree

2 files changed

+12
-24
lines changed

2 files changed

+12
-24
lines changed

Demo Project/ResponsiveTextFieldDemo/ContentView.swift

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@ struct ContentView: View {
2020
var emailResponderDemand: FirstResponderDemand? = .shouldBecomeFirstResponder
2121

2222
@State
23-
var emailResponderState: FirstResponderState = .notFirstResponder
23+
var isEmailFirstResponder: Bool = false
2424

2525
@State
2626
var passwordResponderDemand: FirstResponderDemand?
2727

2828
@State
29-
var passwordResponderState: FirstResponderState = .notFirstResponder
29+
var isPasswordFirstResponder: Bool = false
3030

3131
@State
3232
var isEnabled: Bool = true
@@ -36,7 +36,7 @@ struct ContentView: View {
3636

3737
var isEditingEmail: Binding<Bool> {
3838
Binding(
39-
get: { emailResponderState == .isFirstResponder },
39+
get: { isEmailFirstResponder },
4040
set: {
4141
emailResponderDemand = $0
4242
? .shouldBecomeFirstResponder
@@ -47,7 +47,7 @@ struct ContentView: View {
4747

4848
var isEditingPassword: Binding<Bool> {
4949
Binding(
50-
get: { passwordResponderState == .isFirstResponder },
50+
get: { isPasswordFirstResponder },
5151
set: {
5252
passwordResponderDemand = $0
5353
? .shouldBecomeFirstResponder
@@ -64,9 +64,9 @@ struct ContentView: View {
6464
text: $email,
6565
firstResponderDemand: $emailResponderDemand.animation(),
6666
configuration: .email,
67-
onFirstResponderStateChanged: { responderState in
67+
onFirstResponderStateChanged: { isFirstResponder in
6868
withAnimation {
69-
emailResponderState = responderState
69+
isEmailFirstResponder = isFirstResponder
7070
}
7171
},
7272
handleReturn: { passwordResponderDemand = .shouldBecomeFirstResponder },
@@ -90,9 +90,9 @@ struct ContentView: View {
9090
isSecure: hidePassword,
9191
firstResponderDemand: $passwordResponderDemand.animation(),
9292
configuration: .combine(.password, .lastOfChain),
93-
onFirstResponderStateChanged: { responderState in
93+
onFirstResponderStateChanged: { isFirstResponder in
9494
withAnimation {
95-
passwordResponderState = responderState
95+
isPasswordFirstResponder = isFirstResponder
9696
}
9797
},
9898
handleReturn: { passwordResponderDemand = .shouldResignFirstResponder },

Sources/ResponsiveTextField/ResponsiveTextField.swift

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ import SwiftUI
1010
/// A SwiftUI wrapper around UITextField that gives precise control over the responder state.
1111
///
1212
public struct ResponsiveTextField {
13-
public typealias FirstResponderStateChangeHandler = (FirstResponderState) -> Void
13+
/// Communicates the text field's first responder state using a boolean value (is first responder).
14+
public typealias FirstResponderStateChangeHandler = (Bool) -> Void
1415

1516
/// The text field placeholder string
1617
let placeholder: String
@@ -144,19 +145,6 @@ public struct ResponsiveTextField {
144145

145146
// MARK: - Managing the first responder state
146147

147-
/// Encapsulates the current state of the text field in the responder chain.
148-
///
149-
/// When the text field starts or ends editing it's state will automatically change to `isFirstResponder`
150-
/// or `notFirstResponder` respectively.
151-
///
152-
public enum FirstResponderState: Equatable {
153-
/// The text field is not currently the first responder (i.e not being edited)
154-
case notFirstResponder
155-
156-
/// The text field is the current first responder and is being edited.
157-
case isFirstResponder
158-
}
159-
160148
/// Represents a request to change the text field's first responder state.
161149
///
162150
public enum FirstResponderDemand: Equatable {
@@ -237,12 +225,12 @@ extension ResponsiveTextField: UIViewRepresentable {
237225
}
238226

239227
public func textFieldDidBeginEditing(_ textField: UITextField) {
240-
parent.onFirstResponderStateChanged?(.isFirstResponder)
228+
parent.onFirstResponderStateChanged?(true)
241229
parent.firstResponderDemandFulfilled()
242230
}
243231

244232
public func textFieldDidEndEditing(_ textField: UITextField) {
245-
parent.onFirstResponderStateChanged?(.notFirstResponder)
233+
parent.onFirstResponderStateChanged?(false)
246234
parent.firstResponderDemandFulfilled()
247235
}
248236

0 commit comments

Comments
 (0)