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

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

Swift 3.0
Xcode 8.0
sponsored link

キーボードを閉じる

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

  1. resignFirstResponderを設定
  2. Did End On Exit を設定
  3. ボタン等でendEditing()を使う方法
 

1. resignFirstResponderを設定

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

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

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

Storyboard に UITextField を配置して、入力した文字を表示する Label を下に置きます。見やすくするため Inspector area で背景をそれぞれグレーに設定します。
 
スクリーンショット 2015-02-25 11.06.43
 
UITextFieldDelegate をViewControllerに設定して
Text Field のデータを受け取ります。

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

全体のコード
ViewController.swift

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

 

2. Did End On Exit を設定

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

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

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

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

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

 

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

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

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

 

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

textfield_3

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

尚、Objective-C のケースはこちらです