今回はUITextFieldについて色々やってみようと思います。
UITextFieldについて
UITextFieldを使うと、
文字を入力することができます。
例を挙げると、
・名前を入力する欄(フォーム)
・住所を入力する欄(フォーム)
・検索するためにテキストを入力する欄(フォーム) ・・・etc
つまり、アプリにはほとんど必須と言っても良いほどのUIなのです。超大事なのです。
TextFieldを使ってシンプルなアプリを作成しましょう

今回はこんな感じのアプリを作ります!!
まずは新しいプロジェクトを立ち上げ、
StoryBoardを開いてください。
そしてこんな具合で、
UIを配置してください。
次に、コードと結びつけましょう。
名前はそれぞれ、
UILabel:label (outlet)
UIButton:changeButton (action)
UITextField:textField (outlet)
にしましょう。
import UIKit class ViewController: UIViewController{ @IBOutlet weak var label: UILabel! @IBOutlet weak var textField: UITextField! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } @IBAction func changeButton(_ sender: Any) { } }
こうなっていれば完璧です!!
そして最後に
@IBAction func changeButton(_ sender: Any) { label.text = textField.text }
としましょう。
label.text = textField.text
の意味は
labelのtextに、現在表示させてるtextFieldのtextを代入しよう!
という意味です。
ひとまず完成です。
RUNして見ましょう。
動きましたか??
Delegate・デリゲートについて
デリゲートとは、
それぞれのUIのできる範囲にないことを
別のUIに任せることです。
自分ではできないことをできる人に任せる
ということです。
今回なぜ、delegateについて解説しているのかといいますと、
『enter(return)キー』を押した時に、キーボードを閉じる処理をしたいからです。
だいたいどんなアプリもenterを押すと、キーボードが閉じますよね!それです!
しかし、textFieldはキーボードを閉じることができません・・・
そこで、ViewControllerに任せるのです!!
今回では、
enterを押す
↓
TextFieldはenterを押されたことを感知する
↓
TextFieldはenterが押されたことをViewControllerに教える。
↓
ViewControllerがキーボードを閉じる
という動きになります。
TextFieldはキーボードを閉じることができないので、
閉じることができるViewControllerにその処理を任せるということです。
では、具体的に書いていきましょう。
import UIKit class ViewController: UIViewController, UITextFieldDelegate{// UITextFieldDelegateを設定!!! @IBOutlet weak var label: UILabel! @IBOutlet weak var textField: UITextField! override func viewDidLoad() { super.viewDidLoad() textField.delegate = self // textFieldのdelegateをself(ViewController)に任せるぜ!! } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } @IBAction func changeButton(_ sender: Any) { label.text = textField.text } func textFieldShouldReturn(_ textField: UITextField) -> Bool { // enter(return)を押した時に呼ばれるメソッド label.text = textField.text // changeButtonと同じ textField.resignFirstResponder() // キーボードを閉じるよ!! return true } }
完成!!