按钮未显示在 SwiftUI 中的工具栏键盘位置中

问题描述 投票:0回答:1

我正在尝试使用带有键盘放置的工具栏将“完成”按钮放在键盘上方。当应用程序启动并且键盘打开时,工具栏根本不显示,因此按钮不存在。

但是,如果我使用导航链接并导航到另一个屏幕,然后返回并点击文本字段,该按钮就会显示并按预期工作。当我退出应用程序并重新启动它时,工具栏也会显示。该问题出现在 iOS 17 中。在 iOS 16 上它可以正常工作。

这是示例代码:

struct ContentView: View {
    @State private var amountField = ""
    @FocusState var keyboardDismiss: Bool
    
    var body: some View {
        NavigationStack {
            List {
                NavigationLink(destination: Text("Screen 2")) {
                    Text("Go to screen 2")
                }
                
                TextField("0.00", text: $amountField)
                    .keyboardType(.decimalPad)
                    .focused($keyboardDismiss)
                
            }
            .navigationTitle("Test Keyboard")
            .toolbar {
                ToolbarItemGroup(placement: .keyboard) {
                    Spacer()
                    Button("Done") { keyboardDismiss = false }
                }
            }
            
        }
        
        
    }
}
button swiftui keyboard toolbar ios17
1个回答
0
投票

找到了解决方法:向 NavigationStack 添加空导航路径为我解决了这个问题(到目前为止)。

@State var path = NavigationPath()

NavigationStack(path: $path) {
...
}

致谢:https://stackoverflow.com/a/75756609/10603205

© www.soinside.com 2019 - 2024. All rights reserved.