【Swift】【XCode】UITextFieldのキーボードの扱い
目次
UITextFIedlを使用したときのキーボードの扱い
returnキーでキーボードをしまう
UITextFieldDelegate
を実装し、returnキーを押したイベント
を取得します。UITextField
のresignFirstResponder関数
を使うことで、ファーストレスポンダをやめます。- UITextFieldは、ファーストレスポンダになるとキーボードを表示し、やめると、キーボードを非表示にする性質を持っています。
textFieldShouldReturn関数
はtrue
を返すことで、returnキーを押したイベント
を発行し処理を実行します。
1 |
|
キーボードの外をタップして、キーボードをしまう
UIViewController
に用意されている、touchesBeganメソッド
をオーバーライドすることで、Viewのタップイベントを取得できるUIViewクラス
のendEditing関数
に対して、true
を設定することで、強制的に現在のファーストレスポンダをやめさせます。endEditing関数
だけ、UITextFieldクラスと同じファイルに記述してあった。1
2
3
4extension UIView {
open func endEditing(_ force: Bool) -> Bool // use to make the view or any subview that is the first responder resign (optionally force)
}1
2
3
4
5
6
7
8
9
10
11
12class ViewController: UIViewController{
@IBOutlet weak var testTextField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
view.endEditing(true)
}
}
view.endEditing(true)とtextField.resignFirstResponder()の違い
view.endEditing(true)を使えば、reutrnキーでキーボードをしまう
の処理もできてしまいます。では、2つのキーボードのしまい方の違いは何なのでしょうか。
view.endEditing(true) : 現在の画面内で現在のファーストレスポンダをやめさせます。結果として、
UITextFiled
のresignFirstResponder関数
を呼んでいます。textField.resignFirstResponder : returnキーを押したイベントが発火したことで、引数の
UITextField
がファーストレスポンダ
だとわかっているので、引数のresignFirstResponder関数
を呼ぶことで、ファーストレスポンダ
をやめさせています。
結果として、どちらもresignFirstResponder関数
を呼んでいることになります。
【Swift】【XCode】UITextFieldのキーボードの扱い
https://blog.djima.net/2021/07/16/【Swift】【XCode】UITextFieldのキーボードの扱い/