如何制作单字符TextField?

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

我想做游戏。首先,我需要 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)
        }
    }
}
swiftui
1个回答
0
投票

我将代码更改如下并且有效 所以预览时不需要定义变量

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()
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.