追記
・本処理における不具合の対処方法を追記しました。
環境
- 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度しか全選択の状態にならない」という不具合に対する対処方法を追記しました。