よくある「テキストを入力→追加ボタンを押す→データの追加」という動作。
アプリの誤操作を防止するために、つけたくなったのが
「TextFieldが空欄なら追加ボタンが押せない」という機能。作り方を残しておきます。
実装方法
TextFieldと追加ボタン作成
@IBOutlet weak var newContentsTextField: UITextField!
@IBOutlet weak var addButton: UIButton!
TextFieldの「Editing Changed」接続
StoryboardのTextFieldを右クリック
オブジェクトが変更されたときに呼ばれる「Editing Changed」をViewControllerに接続
@IBAction func textEditingDidChanged(_ sender: Any) {
}
https://developer.apple.com/documentation/uikit/uicontrol/event/1618241-editingchanged
TextFieldの変更処理を追加
TextFieldが空欄の時「ボタンの無効化」「半透明」にします。
private func updateTextFieldButton() {
if newContentsTextField.text == "" {
addButton.isEnabled = false
addButton.layer.opacity = 0.4
} else {
addButton.isEnabled = true
addButton.layer.opacity = 1
}
}
viewDidLoadとEditing Changedに追加
画面読み込み時とTextFieldの変更時に空欄かどうか判定
@IBAction func textEditingDidChanged(_ sender: Any) {
updateTextFieldButton()
}
override func viewDidLoad() {
super.viewDidLoad()
updateTextFieldButton()
}
全体のコード
@IBOutlet weak var newContentsTextField: UITextField!
@IBOutlet weak var addButton: UIButton!
@IBAction func textEditingDidChanged(_ sender: Any) {
updateTextFieldButton()
}
override func viewDidLoad() {
super.viewDidLoad()
updateTextFieldButton()
}
private func updateTextFieldButton() {
if newContentsTextField.text == "" {
addButton.isEnabled = false
addButton.layer.opacity = 0.4
} else {
addButton.isEnabled = true
addButton.layer.opacity = 1
}
}