web-dev-qa-db-ja.com

数字と単一のドットのみを受け入れるSwiftUI TextFieldを作成する方法は?

ユーザーが数字と1つのドットだけを入力できるswiftuiテキストフィールドを作成する方法は?つまり、入力が数字またはドットであり、テキストフィールドに別のドットがない場合、数字は受け入れられます。それ以外の場合、数字の入力は無視されます。ステッパーの使用はオプションではありません。

3
M.Serag

これは、TextField検証の簡単なソリューションです:(更新)

struct ContentView: View {
@State private var text = ""

func validate() -> Binding<String> {
    let acceptableNumbers: String = "0987654321."
    return Binding<String>(
        get: {
            return self.text
    }) {
        if CharacterSet(charactersIn: acceptableNumbers).isSuperset(of: CharacterSet(charactersIn: $0)) {
            print("Valid String")
            self.text = $0
        } else {
            print("Invalid String")
            self.text = $0
            self.text = ""
        }
    }
}

var body: some View {
    VStack {
        Spacer()
        TextField("Text", text: validate())
            .padding(24)
        Spacer()
    }
  }
}
0
FRIDDAY