LoginSignup
2
3

More than 5 years have passed since last update.

【Swift】 TextFieldをタップした時に全選択できるようにする

Last updated at Posted at 2018-05-05

追記
・本処理における不具合の対処方法を追記しました。

環境

  • macOS HighSierra 10.13.4
  • Xcode 9.3
  • Swift 4.1

目的

TextFieldをタップした時に、TextFieldの値が存在する場合において全選択をできるように設定する。

準備

  • ViewControllerにUITextFieldDelegateを設定する。
ViewController.swift
class ViewController: UIViewController, UITextFieldDelegate {

    // UITextFieldの定義
    @IBOutlet weak var myTextField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()

        // UITextFieldDelegateの設定
        self.urlTextField.delegate = self
    }

    func textFieldDidBeginEditing(_ textField: UITextField) {
        // ここに本処理を記述していく
    }

}

処理

1. TextFieldの選択範囲を指定する方法:textRange(from: UITextPosition, to: UITextPosition)

ViewController.swift
func textFieldDidBeginEditing(_ textField: UITextField) {

    // TextFieldの選択範囲を最初から最後まで(全選択)に指定する
    textField.selectedTextRange = textField.textRange(
        from: textField.beginningOfDocument,
        to: textField.endOfDocument) 
}

2. TextField内の文字列を選択状態にする方法:selectAll(sender: Any?)

ViewController.swift
func textFieldDidBeginEditing(_ textField: UITextField) {

    // nilチェック
    if textField != self.urlTextField {
        return
    }

    // TextField内の文字列を選択状態にする
    textField.selectAll(self.textField.text)
}

問題

2回に1度しか全選択の状態にならない

本処理において、
「2回に1度しか全選択の状態にならない」という不具合に対する対処方法を追記しました。

[Swift] TextField全選択時の処理で「2回に1度しか全選択の状態にならない」場合の対処方法

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3