🦅

【Swift5/Xcode13】TextFieldでReturnを押下すると次の入力フォームにフォーカスする

2022/02/14に公開

なぜ実装するか

例えば氏名,電話番号,住所など複数の入力がある場合、わざわざTextFieldをタップする仕組みになるよりは、キーボードのReturn(改行)だけで操作できる方がユーザリビティだからです。

実装

    func settingTextFieldDelegate() {
        let createViewView = self.view as! CreateViewView
        createViewView.folderNameLabel.delegate = self
        createViewView.deckNameLabel.delegate = self
        createViewView.deckCodeLabel.delegate = self
    }

extension CreateViewViewController: UITextFieldDelegate {
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        //リターンキーが押された時に実行される
        // 今フォーカスが当たっているテキストボックスからフォーカスを外す
        textField.resignFirstResponder()
        // 次のTag番号を持っているテキストボックスがあれば、フォーカスする
        let nextTag = textField.tag + 1
        if let nextTextField = self.view.viewWithTag(nextTag) {
            nextTextField.becomeFirstResponder()
        }
        return true
    }
}

実装の際に、xibファイル上でtagを以下のように設定します。

Discussion