Help us understand the problem. What is going on with this article?

iOSでキーボードを閉じる方法各種

More than 3 years have passed since last update.

iOSでキーボードを閉じる方法ですが、いくつか存在します。

UITextField / UITextViewに指示する方法

最も一般的かと思いますが、ファーストレスポンダーであるUITextFieldやUITextViewのresignFirstResponder()を実行します。

特定のUITextFieldやUITextViewの状態を変更することができるという特徴があります。

textField.resignFirstResponder()

UIViewに指示する方法

ファーストレスポンダーであるUITextFieldやUITextViewが載っているUIViewのendEditing(:)を実行します。

どのUITextFieldやUITextViewがファーストレスポンダーかを知る必要がありません。

view.endEditing(true)

Key Windowに指示する方法

Key WindowのendEditing(:)を実行します。

表示しているビューのコントローラを知らなくてもキーボードを閉じることができます。

UIApplication.sharedApplication().keyWindow?.endEditing(true)

UIApplicationに指示する方法

UIApplicationのsendAction(:,to:from:forEvent:)を実行します。toにnilを渡すことで、現在のファーストレスポンダーに対してメソッドを実行することができることを利用しています。

Windowより上層のUIApplicationを利用することができます。

UIApplication.sharedApplication().sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, forEvent: nil)

UIScrollViewのkeyboardDismissModeを利用する方法

iOS7以降では、スクロールビューやテーブルビューを利用している場合に、それらをドラッグしたりキーボードを下にドラッグした時にキーボードを閉じるように設定できます。

scrollView.keyboardDismissMode = .OnDrag
scrollView.keyboardDismissMode = .Interactive
rizumita
iOSアプリを開発して生きています。
https://rizumita.medium.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away