Issue
In SwiftUI, the keyboard toolbar often does not appear on the first focus when using .toolbar. It only appears after switching fields or minimizing the app.
Solution
To force UI re-rendering, we use a hidden Toggle that switches states when the view appears, ensuring that SwiftUI updates and correctly displays the toolbar.
// Hidden toggle for UI refresh
@State private var toggleState = false
// .......
// Hidden toggle forces UI update
Toggle("", isOn: $toggleState)
.labelsHidden()
.hidden()
// ......
.onAppear {
toggleState.toggle() // Trigger UI update
DispatchQueue.main.asyncAfter(deadline: .now() + 0.05) {
toggleState.toggle() // Toggle back after a delay
}
}
.toolbar {
ToolbarItemGroup(placement: .keyboard) {
Button("Done") { /*...*/ } // Close keyboard
}
}
//
Topic:
UI Frameworks
SubTopic:
SwiftUI
Tags: