我想做游戏。首先,我需要 3 个文本字段,用户可以输入 1 位数字。
我编写了以下代码,但它没有按我的预期工作。我怎样才能做到这一点?
import SwiftUI
struct RoundRectView : View {
@State var text : String
let limit = 1
var body: some View {
TextField("", text: $text,
onEditingChanged: { newValue in
if text.count > 1 {
text = String(text.prefix(1))
}}
)
.padding()
.kerning(-0.2)
.bold()
.frame(width: 68, height: 56)
.keyboardType(.numberPad)
.overlay(
RoundedRectangle(cornerRadius: 21)
.stroke(lineWidth:2)
)
}
}
struct Preview : PreviewProvider {
static var enteredNumber = ""
static var previews: some View {
HStack{
RoundRectView(text: enteredNumber)
RoundRectView(text: enteredNumber)
RoundRectView(text: enteredNumber)
}
}
}
我将代码更改如下并且有效 所以预览时不需要定义变量
import SwiftUI
struct RoundRectView : View {
@State private var inputText = ""
let limit = 1
var body: some View {
TextField("", text: $inputText)
.keyboardType(.numberPad)
.onChange(of: inputText) { newValue, oldValue in
if inputText.count > 1 {
inputText = String(inputText.prefix(1))
}
}
.padding()
.kerning(-0.2)
.bold()
.frame(width: 68, height: 56)
.keyboardType(.numberPad)
.overlay(
RoundedRectangle(cornerRadius: 21)
.stroke(lineWidth:2)
)
}}
struct Preview : PreviewProvider {
static var previews: some View {
HStack{
RoundRectView()
RoundRectView()
RoundRectView()
}
}
}