UISearchBarフォーカス時にキーボードを非表示にした後にsegueで画面遷移

スポンサーリンク

先日のエントリー UISearchBarをNavigation Barに表示(Swift版) | EasyRamble のちょっとした続きです。UISearchBar の文字入力フィールドにフォーカスすると、iOS のデフォルト挙動では自動的にソフトウェアキーボードが表示されます。

Screen Shot 2015-06-15 at 20.36.21

そして、UISearchBar フォーカス時のキーボードが表示された状態で、UITableView などから segue で画面遷移すると、画面遷移した後にキーボードが非表示にされて、ちょっと目障りな動作になります。これを、キーボードを非表示にした後に、画面遷移するようにしたかった。

【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
画像付き英語辞書 Imagict | 英単語をイメージで暗記
【開発記録】
英単語を画像イメージで暗記できる英語辞書サービスを作って公開しました
スポンサーリンク

prepareForSegue() メソッドで UISearchBar を resignFirstResponder() する

いくつか試行錯誤して、最初 UITapGestureRecognizer を使ってタップ時のアクションでキーボードを非表示にしようとしたところ、segue での画面遷移が無効になって失敗。なので、UITapGestureRecognizer は使わないことにした。

代わりに、以下のように prepareForSegue() の中で、UISearchBar を resignFirstResponder() すると上手く動作しました。

SearchViewController.swift

prepareForSegue() というメソッド名なので、segue での画面遷移の前準備として色々と前処理を行いたい場合は、このメソッド内に実装すれば良い感じでしょうかね。

スポンサーリンク
 
スポンサーリンク

Leave Your Message!