[iPhone] TextField UIKeyboardType を使う

Photo by freestocks.org on Unsplash
TextFieldで入力を促す時に電話番号であれば数字だけのソフトキーが出てきた方がいいのですが、英字から数字に切り替えるのはユーザーの不満になります。

最初か入力の種類がわかっているのであればそれを指定してしまったがいいでしょう。

Swift 5.1
Xcode 11.3.1

UIKeyboardType

 

TextFieldでユーザー登録画面などを作る時に意外と簡単にできない事情があります。

  1. 入力に応じたキーボード、名前の後に年齢を入力するなど
  2. ユーザーは入力後に確定を実行するとは限らない
  3. キーボードは自動的には閉じない

例えば、文字、数字、メルアド表記が混在する登録画面のケースを考えてみます。

 

 

addTarget

 
キーボードのタイプは色々な種類がありますが、入力毎にキーボードのタイプを変えるにはUIKeyboardTypeで設定します。

 
addTarget を使って文字が入力されるのを検出します
 
ネット上でユーザー登録するケースが多いかもしれませんが、いちいち項目ごとに確定するとは限りません。まとめて「登録」ボタンをタップということを想定します。
 
確定せずに、そのまま次の項目に移ったとしても最終の状態を一時的に確定まで保持していれば大丈夫です。
 
そもそも、numberPad などには確定するキーがありません

 

 

storyboardの設定

 
キーボードの閉じ方はこちらを参考にしてください。

UITextField は文字を入力するためのUIですが、キーボードは自動的には閉じません。ここでは、キーボードの閉じる方法を3例紹介します...

ここではendEditing(true)
を使うことができますが、まとめてview.endEditing(true)とすることもできます。
 
それらをふまえて
UITextFieldを4つ、それぞれ
“Name”, “Age”, “Phone”, “E-mail”
の項目をユーザーに入力してもらうことを想定します。
 
TextFieldの横に、入力を促すためのLabelを追加してもいいのですが
ここはコードでplaceholderを使って、入力してほしい項目を見せます。
これはAndroidでいうところのhitに相当しますが、入力を始めると消えます。
 
また結果を表示するLabelを4行表示できるように「Lines」を4にします。
 
storyboardに部品を置いて背景色を薄く入れて見やすくします。
 

 

サンプルコード

 
コードを記述します。
 
ViewController.swift

 
storyboardのText Fieldなどを紐付けして完成です。
 

 
「Register」ボタンをタップした時に
各項目の最新データをまとめて表示しています
 

 
最終的には当然ですがsimulatorではなく実機確認しましょう。
 
Simulatorの場合、キー入力設定がSoftware Keyboardになっているか確認、
「Hardware」「Keyboard」「Toggle Software Keyboard」です。
 

 
ちなみに、emailAddressでのメールキーボードはasciiCapableのほうが適しているのではと思います。
 
また、このようなUITextFieldをたくさん使うケースでは特に、TextFieldが下から迫り上がるKeyboardに重なってしまいます。それを回避することも検討する必要があります。
 
 
関連ページ:

一人でアプリ開発の限界を感じたら

アプリ開発を始めたけどわからないところがあり、誰かに聞きたいけど周りにはそんな人はいない…あるいは、会社で働いていて日中そんなに時間をとれないなど、オンライン・スクールがいいと思います。


TECH ACADEMY
自宅にいながら1時間でプログラミング基礎を習得

こういうものではアプリ作れないと言う意見もありますが、それは結局本人のやる気があるかないかです。やる気があっても独学では突破しにくいところは教えてもらうのが一番早い。


侍エンジニア塾
侍エンジニア塾 無料体験レッスン



とても簡単なことなのに本やネットの画像だけでは分かりにくいことはあります。実際に質問してピンポイントで教えてもらうと、なんだそんなこと、と言うのがけっこうあります。


CodeCamp
~約20,000名の受講生と300社以上の導入実績~
現役エンジニアのオンライン家庭教師CodeCamp




直接(ネットで)誰か分かる人に聞いた方が早く解決して、上達も早いと思います。


Play Ground
本業と並行してやるには月額制なのがありがたいです。


無料で転職まで
これはiOSアプリ限定ではありませんが無料です
その代わり就職することを前提にしたスクールで「エンジニアになって職を得たい」のであれば手っ取り早いかもしれません


誤字脱字、意味不明などのご意見は 謙: e-mail まで
ブックマークしておくと便利です このエントリーをはてなブックマークに追加
Twitter:


シェアする

  • このエントリーをはてなブックマークに追加

フォローする