Posted at

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