1.はじめに
ビュー上にUITextField
やUITextView
が複数ある場合に、キーボードを閉じるためにfirstResponder
を取得します。
一つづつ全てアウトレット接続したりするのは面倒なので、汎用的に使えるメソッドにまとめました。
2.コード
func getFirstResponder(view: UIView) -> UIView? {
if view.isFirstResponder {
return view
}
for subview in view.subviews {
if let _ = getFirstResponder(view: subview) {
return subview
}
}
return nil
}
3.ポイント
メソッド内でgetFirstResponder()
を再帰的に呼んで、firstResponder
を探します。
firstResponder
がないと、最終的にnil
が返ってきます。
4.使い方
表示されているキーボードを閉じるコードです。
getFirstResponder(view: view)?.resignFirstResponder()