iOSアプリでUITextFieldで入力フィールドを実装した際に、入力用キーボードが表示されたままの状態の際に取れる対処方法です。
1. キーボード入力の決定
入力用キーボードの右下部分を決定表記にする
以下のようにUITextFieldの「Return Key」を「Done」に設定する
UITextFieldDelegateをViewControllerに実装
ViewController.swift
class ViewController : UIViewController, UITextFieldDelegate {
@IBOutlet var textField : UITextField!
override func viewDidLoad() {
super.viewDidLoad()
self.textField.delegate = self
}
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
...
}
ポイントは下記2点。
- UITextFieldDelegateの実装箇所をUITextField.delegateに設定する
- textFieldShouldReturnメソッドにUITextField.resignFirstResponder
上記を実装することで、キーボード入力の決定ボタンで、入力用キーボードを非表示にできます。
2. UITextField以外の部分をタッチ
もう一つがUITextField以外の部分をタッチした場合に非表示にする方法です。
ViewControllerのtouchesBeganメソッドをオーバライドして以下の内容を実装することで対応できます。
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
if (self.textField.isFirstResponder()) {
self.textField.resignFirstResponder()
}
}