1
+ import Observation
1
2
import SwiftComponents
2
3
import SwiftUI
3
4
import UIKit
@@ -10,11 +11,14 @@ struct InputFieldPreview: View {
10
11
@State private var text : String = " "
11
12
@FocusState private var isFocused : Bool
12
13
14
+ private let inputField = UKInputField ( )
15
+ private let inputFieldDelegate = InputFieldDelegate ( )
16
+
13
17
var body : some View {
14
18
VStack {
15
19
PreviewWrapper ( title: " UIKit " ) {
16
20
UKComponentPreview ( model: self . model) {
17
- UKInputField ( model : self . model )
21
+ self . inputField
18
22
}
19
23
}
20
24
PreviewWrapper ( title: " SwiftUI " ) {
@@ -59,11 +63,7 @@ struct InputFieldPreview: View {
59
63
return self . model. placeholder. isNotNilAndEmpty
60
64
} ,
61
65
set: { newValue in
62
- if newValue {
63
- self . model. placeholder = " Placeholder "
64
- } else {
65
- self . model. placeholder = nil
66
- }
66
+ self . model. placeholder = newValue ? " Placeholder " : nil
67
67
}
68
68
) )
69
69
Toggle ( " Required " , isOn: self . $model. isRequired)
@@ -82,11 +82,44 @@ struct InputFieldPreview: View {
82
82
title: " Tint Color " ,
83
83
selection: self . $model. tintColor
84
84
)
85
+ Toggle ( " Title " , isOn: . init(
86
+ get: {
87
+ return self . model. title. isNotNilAndEmpty
88
+ } ,
89
+ set: { newValue in
90
+ self . model. title = newValue ? " Title " : nil
91
+ }
92
+ ) )
93
+ }
94
+ }
95
+ . onAppear {
96
+ self . inputField. textField. delegate = self . inputFieldDelegate
97
+ }
98
+ . toolbar {
99
+ ToolbarItem ( placement: . primaryAction) {
100
+ if self . inputFieldDelegate. isEditing || self . isFocused {
101
+ Button ( " Hide Keyboard " ) {
102
+ self . isFocused = false
103
+ self . inputField. resignFirstResponder ( )
104
+ }
105
+ }
85
106
}
86
107
}
87
108
}
88
109
}
89
110
111
+ @Observable
112
+ private final class InputFieldDelegate : NSObject , UITextFieldDelegate {
113
+ var isEditing : Bool = false
114
+
115
+ func textFieldDidBeginEditing( _ textField: UITextField ) {
116
+ self . isEditing = true
117
+ }
118
+ func textFieldDidEndEditing( _ textField: UITextField ) {
119
+ self . isEditing = false
120
+ }
121
+ }
122
+
90
123
#Preview {
91
124
InputFieldPreview ( )
92
125
}
0 commit comments