5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【SwiftUI】TextFieldで数値を扱う

Posted at

はじめに

TextFieldで数字を扱いたいときに、数字を文字列に変換して、
使うとき数値に戻すといった面倒なことをしてる人いますよね
私もそれやってました。

iOS15からTextFiledで直接数値を扱えるようになったらしいんです。
気づきませんでした。

サンプルアプリ

Simulator Screen Recording - iPhone 15 Pro - 2024-02-16 at 21.53.21.gif

実装

import SwiftUI

struct ContentView: View {
    @State var value: Decimal.FormatStyle.FormatInput = 0.0
    @State var int: Int = 0
    @State var double: Double = 0.0
    @State var float: Float = 0.0
    
    var body: some View {
        VStack {
            GroupBox("NSDecimal") {
                Text(value.description)
                
                TextField("", value: $value, format: .number)
                    .textFieldStyle(.roundedBorder)
            }
            
            GroupBox("Int") {
                Text(int.description)
                
                TextField("Int", value: $int, format: .number)
                    .textFieldStyle(.roundedBorder)
            }
            
            GroupBox("Double") {
                Text(double.description)
                
                TextField("Double", value: $double, format: .number)
                    .textFieldStyle(.roundedBorder)
            }
            
            GroupBox("Float") {
                Text(float.description)
                
                TextField("Float", value: $float, format: .number)
                    .textFieldStyle(.roundedBorder)
            }
        }
        // ここでキーボードを数字のみにしている
        .keyboardType(.decimalPad)
        .padding(20)
    }
}

数字ではないものも入力できる

.keyboardType(.decimalPad)の指定をなくせば、数字以外も入力できるようになります。
しかし、@Stateに流れてくる値は数値です。
不要な文字列があるとその前までの、正常な部分までが@Stateに流れてくる仕様っぽいです。
有能すぎますね。

Simulator Screen Recording - iPhone 15 Pro - 2024-02-16 at 21.58.33.gif

おわり

こんな機能がiOS15で登場してたなんて、、、

公式ドキュメント

5
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?