TextFieldのキーボードを閉じる方法をまとめてみました。
1. 「return」キーを押す
コードベース
resignFirstResponder()メソッドを利用します。
ViewController.swift
import UIKit
class ViewController: UIViewController, UITextFieldDelegate{
@IBOutlet weak var inputText: UITextField!
@IBOutlet weak var outputText: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
inputText.delegate = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
// キーボードを閉じる
textField.resignFirstResponder()
outputText.text = textField.text
return true
}
}
storyboardベース
Xcodeのイベントアクションを利用します。
①TextFieldの上で右クリック(二本指でタップ)
②「Sent Events」の「Did End On Exit」を「control」キーを押しながらドラッグ
③「Name」をつけて「Connect」
コードが追加されたことを確認できます。
ViewController.swift
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var outputText: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
@IBAction func inputText(_ sender: UITextField) {
outputText.text = sender.text
}
}
他にも様々なイベントアクションがあるので覚えておくと簡単に実装できます。
参考記事:ボタンによるイベント処理 – swiftによるiOSアプリ開発
2. ボタンを押す
endEditing()メソッドを利用します。
(resignFirstResponder()メソッドでも実装可能です。)
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var inputText: UITextField!
@IBOutlet weak var outputText: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
@IBAction func button(_ sender: Any) {
outputText.text = inputText.text
// キーボードを閉じる
inputText.endEditing(true)
}
}
3. TextField以外の部分をタッチ
touchesBeganメソッドをオーバーライドします。
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var outputText: UILabel!
@IBOutlet weak var inputText: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
outputText.text = inputText.text
self.view.endEditing(true)
}
}
以上をうまく組み合わせることでユーザーにストレスを与えない実装になりそうです。