我的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)
}
}