SwiftUI - State change in UITextField causes the frameWidth to grow uncontrolled and ignore bounds/frame
I am using SwiftUI and bridge to UITextField (I need to assign firstResponder). I use the code from here: SwiftUI: How to make TextField become first responder?
The following code updates my @Binding var. This of course is intended behavior. The problem is that this causes the textField to ignore the frame/ bounds. It just expands and pushes other elements out of the view. Other parts of the view are also reliant on the @State.
func textFieldDidChangeSelection(_ textField: UITextField) {
text = textField.text ?? ""
}
How can I update the @State and still keep the textField in the frame?
You need to decrease priority of content resistance in makeUIView
(so content would not push external layout set in SwiftUI) like below
func makeUIView(context: UIViewRepresentableContext<MyField>) -> UITextField {
let field = UITextField(frame: .zero)
field.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
...