TextFieldに文字が入力されるまでボタン機能は無効にしたい
Swift初学者です。用語等、何か間違って使用しているかもしれませんが、ご容赦いただけると幸いです。
現在、Swiftでのアプリ作成を練習しており、ログインページを作成中です。
そのログインページで、メールアドレスとパスワードを入力するまで、ログインボタンをタップできないようにしたいです。
そこで、以下のサイトを参考にコードを書いてみたのですが、テキストを入力後もログインボタンが有効化されません。
TextFieldに値が入っていないときにボタンを非活性(無効)にする方法
teratailでも類似の質問を確認したのですが、原因がわからず困っています。
ご教示いただきたいこと
①テキスト入力後もログインボタンが有効にならない理由
②テキスト入力後にボタンを有効化する方法
※メールアドレス・パスワードが合致しているかの判断は考慮しなくて問題ありません。
開発環境:Xcode11
import UIKit class LoginViewController: UIViewController, UITextFieldDelegate { @IBOutlet weak var inputMail: UITextField! @IBOutlet weak var inputPassWord: UITextField! @IBOutlet weak var loginButton: UIButton! override func viewDidLoad() { super.viewDidLoad() //最初にボタンを無効にする loginButton.isEnabled = false } // キーボードを閉じるコード(省略しています) //以下のtapMoveListPageは「Editing Change」で接続しています。 @IBAction func tapMoveListPage(_ sender: Any) { if inputMail.text == "" || inputPassWord.text == "" { loginButton.isEnabled = false } else { loginButton.isEnabled = true } //画面遷移のコード(省略しています) } }
@IBAction が一つしか見当たりませんが、テキストを入力した時とボタンを押した時の二つ必要では?
検証してみましたが、「tapMoveListPage」が正常にStoryboardと接続されていたらボタンは有効化されました。
どちらかのUITextFieldが、「tapMoveListPage」に接続されていないってことはないでしょうか?
接続状態が分かるキャプチャもあると、正確な回答が付きやすくなるかもしれません。
「UIControl.Event」の「UIControl.Event.editingChanged」を使って、ただ入力されている文字の数を数えればいいのでは?
返答が遅くなり大変失礼いたしました。
みなさまご回答ありがとうございました。
原因はtsuki01様のおっしゃる通り、Storyboardとの接続が正しくできていないことでした。
回答1件
あなたの回答
tips
プレビュー