【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://daiki-iijima.github.io/2021/07/16/【Swift】【XCode】UITextFieldのキーボードの扱い/




