はじめに
SwiftUIでキーボードを指定する時の方法を調べたので、記事にしました。
ついでにどんなキーボードの種類があるのかも調べてみました。
キーボードの種類を変更する
キーボードの種類をSwiftUIで指定する方法はめちゃくちゃ簡単です。
以下 modifierをキーボードを表示するView(TextField
など)に指定することでキーボードの種類を変更できるようになります。
何の種類のキーボードのするかは、引数のUIKeyboardType
で指定します。
.keyboardType(_ UIKeyboardType:)
実装例
import SwiftUI
struct DecimalPadKeyboardTextFieldView: View {
@State var text: String = ""
var body: some View {
TextField("decimalPad", text: $text)
.keyboardType(.decimalPad)
.textFieldStyle(.roundedBorder)
}
}
キーボードの種類一覧
UIKeyboardType
の種類は以下がある
default
現在の入力方法のデフォルトのキーボードを指定します。
デフォルトのキーボードで.keyboardType(_ UIKeyboardType:)
にて指定しなかった場合は、このキーボードの種類が適用されます。
alphabet
アルファベット入力用のキーボードを指定します。
alphabet
はドキュメントにもあるとおり、deprecated になっているのでアルファベットを使いたい場合はこの後に説明するasciiCapable
を使った方が良いです。
asciiCapable
標準の ASCII 文字を表示するキーボードを指定します。
alphabet
の代わりに使うことを推奨されているだけあって、できることは同じようです。
絵文字とかが使えないので、デフォルトとの違いでしょうかね
asciiCapableNumberPad
ASCII 数字のみを出力する数字パッドを指定します。
decimalPad
数字と小数点付きのキーボードを指定します。
小数点を使うときはこれを使うと良さそうです。
ロケールによっては小数点(.)ではなく、カンマ(,)となることもあるので注意が必要。
例えば、ロケールがドイツになっている場合はカンマ(,)になる
emailAddress
電子メール アドレスを入力するためのキーボードを指定します。
アットマーク(@)やドット(.)が強調されて、名前の通りメールアドレスが入力しやすくなっています
namePhonePad
人の名前または電話番号を入力するためのキーパッドを指定します。
数字のキーボードに切り替えると(123
ボタン押下)以下になる。
numberPad
PIN 入力用の数字キーパッドを指定します。
現状asciiCapableNumberPad
を使った時と違いはありませんが、numberPad
は PIN 入力用となっているので、PIN でない数字の入力にはasciiCapableNumberPad
を使った方が良いかも(今後のアップデートやローケルの違いで細かい違いが出る可能性もあるので)
numbersAndPunctuation
数字と句読点のキーボードを指定します。
phonePad
電話番号を入力するためのキーパッドを指定します。
名前の通り、電話番号を入力しやすいキーボードになっています
twitter
Twitter テキスト入力用のキーボードを指定します。アットマーク (" @") とハッシュ (" #") の文字に簡単にアクセスできます。
Twitter(今は X か)に限らず SNS のサービスだと使いやすそうです
アットマーク (" @") とハッシュ (" #") が入力しやすいこと以外は、default
のキーボードとそれほど変わりません。
URL
URL 入力用のキーボードを指定します。
ドット(.)、スラッシュ(/)、.jpが強調されています。
webSearch
Web 検索用語と URL 入力用のキーボードを指定します。
スペースとピリオドが目立つようになっているようですが、それ以外はデフォルトと同じです。
おわり
以上がSwiftUIでのキーボード種類の変更と、変更できるキーボードの種類一覧でした。
改めて調べてみると結構種類ありますし、今まで文字を打つか数字を打つかぐらいでしか選んでなかったなという気づきがありました。
さまざまな用途で最適化されたキーボードがあるので、どういう用途なのかで使い分けした方がユーザビリティやアクセシビリティの向上がさらに望めそうですね。