在用户键入正确的输入之前,将iOS SwiftUI TextField的键盘保持在屏幕上

时间:2020-08-19 22:57:26

标签: ios keyboard swiftui textfield

我的iOS SwiftUI TextField邀请用户键入一个Int。用户按下返回键后,将发生以下两种情况之一。如果输入是Int,我们将执行一些简单的算术运算并将结果显示在Text中。否则,我们会在文本中的错误消息中显示错误的输入。无论哪种情况,都将关闭TextField的键盘。如果用户键入了错误的输入,如何将键盘保持在屏幕上,并保持在屏幕上,直到用户键入可接受的输入?在此先感谢您,并再次感谢回答我以前的TextField问题的人们。 macOS Catalina 10.15.6,Xcode 11.6。

struct ContentView: View {
    @State private var inputText: String = "";
    @State private var outputText: String = " ";
    
    var body: some View {
        VStack {
            TextField("Enter an integer:",
                text: Binding<String>(
                    get: {return self.inputText},
                    set: {
                        self.inputText = $0;   //$0 is the text in the TextField.
                        self.outputText = " ";
                    }
                ),
                onCommit: {
                    guard let i: Int = Int(self.inputText) else {
                        self.outputText = "Bad input \"\(self.inputText)\".";
                        return;
                    }
                    self.outputText = "The product is \(2 * i).";
                }
            )
                .keyboardType(.numbersAndPunctuation)
                .textFieldStyle(RoundedBorderTextFieldStyle())

            Text(outputText)
        }
        .padding([.leading, .trailing], 16)
    }
}

0 个答案:

没有答案