[iPhone] TextField のキーボードを閉じる方法を3つ

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

Swift 5.1
Xcode 11.3.1

 

キーボードを閉じる

 
TextFieldのキーボードを閉じるために、様々なケースに応じて以下の3つが考えられます。
 

 

resignFirstResponderを設定

 
キーボートを閉じる操作は自動ではやってくれない仕様になっていますが、フォーカスを外せばキーボードは隠れます。

resignFirstResponder()はフォーカスされている状態を外すためのメソッドです。

textFieldShouldReturnは「Return」や「改行」などのキーをタップした時に呼ばれますので、そのタイミングでresignFirstResponder()を設定するとキーボードを閉じることができます。

Storyboard に UITextField を配置して、入力した文字を表示する Label を下に置きます。見やすくするため Inspector area で背景をそれぞれグレーに設定します。
 

 
UITextFieldDelegate をViewControllerに設定して
Text Field のデータを受け取ります。

 
Delegate で受け取ったデータを TextField に渡し、ラベルの文字として代入して、それが終わったらキーボードを閉じます。

全体のコード
ViewController.swift

 
storyboard の UITextField と UILabel をView Controller Scene に接続します。
ビルド実行して文字を入力、「Return」や「改行」などのキーをタップすると TextField の入力文字が Label に反映されたと思います。

Did End On Exit を設定

 
別の方法ですが、上の方法をストーリーボードを使って設定します。
TextField の属性設定の一つ「Did End On Exit」を使ってみます。
 

 
TextField は 「Referencing Outlet」 で textField に紐付けされていますが
Set Events の Did End On Exit で IBAction としても接続します。

textFieldShouldReturn の代わりに
getText(sender : UITextField)
というメソッドを作り、Did End On Exit を設定します。

これで「Return」「改行」などのキーでキーボードが閉じます。
 
ViewController.swift

 
とてもシンプルになりました。

 

ボタン等でendEditing()を使う方法

 
endEditing() を使うと編集作業を終了(キーボードを閉じる)させることができます。例えばボタンで終了させてみたケースです。

新しくボタンを追加して、そのActionとしてendEditing() を設定しました。
 
ViewController.swift

 
ボタン・アクションを紐付けします。
 

 
実際はボタンではなく別のタイミング(画面遷移)などをトリガーにする方が自然かもしれません。キーボードの「改行」「Return」をユーザーが使わないケースが多いのでこれを使って入力を保存することが必要な場合があります。
 
 
References:
UITextField – UIKit | Apple Developer Documentation
resignFirstResponder() – UIResponder | Apple Developer Documentation

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

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


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

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


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



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


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




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


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


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

受講料無料:社会人転職コース


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


シェアする

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

フォローする