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()