fix: single keyboard Done toolbar on Complete Task (closes gitea#5)
Android UI Tests / ui-tests (pull_request) Has been cancelled
Android UI Tests / ui-tests (pull_request) Has been cancelled
The actualCost TextField and the notes TextEditor each had their own `.keyboardDismissToolbar()` modifier, which installs a separate `ToolbarItemGroup(placement: .keyboard)`. SwiftUI accumulates these on the responder chain, so focusing any field rendered two "Done" buttons stacked above the keyboard (issue screenshot in gitea#5). Move the modifier up to the Form root so exactly one keyboard toolbar is registered for the entire screen, matching the pattern already used by `TaskFormView`. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -120,7 +120,6 @@ struct CompleteTaskView: View {
|
|||||||
.foregroundStyle(.secondary)
|
.foregroundStyle(.secondary)
|
||||||
}
|
}
|
||||||
.padding(.leading, 12)
|
.padding(.leading, 12)
|
||||||
.keyboardDismissToolbar()
|
|
||||||
.accessibilityIdentifier(AccessibilityIdentifiers.Task.actualCostField)
|
.accessibilityIdentifier(AccessibilityIdentifiers.Task.actualCostField)
|
||||||
} label: {
|
} label: {
|
||||||
Label(L10n.Tasks.actualCost, systemImage: "dollarsign.circle")
|
Label(L10n.Tasks.actualCost, systemImage: "dollarsign.circle")
|
||||||
@@ -142,7 +141,6 @@ struct CompleteTaskView: View {
|
|||||||
TextEditor(text: $notes)
|
TextEditor(text: $notes)
|
||||||
.frame(minHeight: 100)
|
.frame(minHeight: 100)
|
||||||
.scrollContentBackground(.hidden)
|
.scrollContentBackground(.hidden)
|
||||||
.keyboardDismissToolbar()
|
|
||||||
.accessibilityIdentifier(AccessibilityIdentifiers.Task.notesField)
|
.accessibilityIdentifier(AccessibilityIdentifiers.Task.notesField)
|
||||||
}
|
}
|
||||||
} footer: {
|
} footer: {
|
||||||
@@ -289,6 +287,12 @@ struct CompleteTaskView: View {
|
|||||||
.background(WarmGradientBackground())
|
.background(WarmGradientBackground())
|
||||||
.navigationTitle(L10n.Tasks.completeTask)
|
.navigationTitle(L10n.Tasks.completeTask)
|
||||||
.navigationBarTitleDisplayMode(.inline)
|
.navigationBarTitleDisplayMode(.inline)
|
||||||
|
// ONE keyboard "Done" toolbar at the form root — per-field
|
||||||
|
// `.keyboardDismissToolbar()` modifiers each install a
|
||||||
|
// separate `ToolbarItemGroup(placement: .keyboard)`, and
|
||||||
|
// SwiftUI stacks them on the responder chain so any focused
|
||||||
|
// field renders multiple Done buttons side-by-side (issue #5).
|
||||||
|
.keyboardDismissToolbar()
|
||||||
.toolbar {
|
.toolbar {
|
||||||
ToolbarItem(placement: .cancellationAction) {
|
ToolbarItem(placement: .cancellationAction) {
|
||||||
Button(L10n.Common.cancel) {
|
Button(L10n.Common.cancel) {
|
||||||
|
|||||||
Reference in New Issue
Block a user