[swift]UITextFiledでキーボード以外タップでキーボードを非表示にする
細かなUIがUXを向上することはよくあります。
今日ご紹介するTipsはUITextFiledでキーボード以外の領域をタップしたときにキーボードを非表示にする方法です。
Lineなどのメッセンジャーアプリなどでは、キーボード以外の領域をタップした時にキーボードが非表示になるUIがしばしばあります。
このUIを作ってみましょう
実装方法
実装方法はとっても簡単。
ViewControllerのサブクラスにtouchesBeganメソッドをオーバーライドし、以下のコードを書くだけです。
今回はstoryboardからtextField
というUITextFieldをつなげている想定です。
//ViewController.swift
//TextFiledをstoryboardからつなげておく
@IBOutlet weak var textField: UITextField!
//MARK: キーボードが出ている状態で、キーボード以外をタップしたらキーボードを閉じる
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
//非表示にする。
if(textField.isFirstResponder()){
textField.resignFirstResponder()
}
}
解説
textField.isFirstResponder()
でtextFileld
がファーストレスポンダーなのか(最初にタッチイベント等に応答するオブジェクトなのかどうか)を判断しています。
ここがtrue
のキーボードが表示されていると判断できます。
textField.resignFirstResponder()
でファーストレスポンダーを解除させます。
そうすればキーボードが非表示になります。
以上です。
何かのお役に立てれば嬉しいです!