xcodeで新規登録の画面を作成しています。(参考画像①)
行いたいこと:emails、password、usernameが入力された状態のみ、新規登録のボタンのalpha値を1にし押下可能状態にする
行ったこと:以下のようにextentionで、新規登録クラスに機能を付随させた。
問題点:3つの項目を入力すると、新規登録ボタンのalpha値は1になるものの、押下できない。
extenion
1extension NewRegisterViewController: UITextFieldDelegate{ 2 3 func textFieldDidChangeSelection(_ textField: UITextField) { 4 5 let emailText = emailTextField.text 6 let passwordText = passwordTextField.text 7 let userNametext = usernameTextField.text 8 9 if emailText!.isEmpty || passwordText!.isEmpty || userNametext!.isEmpty { 10 registerButton.isEnabled = false 11 12 }else{ 13 registerButton.alpha = 1 14 registerButton.isEnabled = true 15 } 16 } 17}
viewdidLoad
1passwordTextField.delegate = self 2emailTextField.delegate = self 3usernameTextField.delegate = self 4registerButton.layer.cornerRadius = 20 5registerButton.alpha = 0.6
質問者様のコードを試したら正常動作したので、以下の点を確認させてください。
「押下できない = ボタンのメソッドが呼ばれない」という認識でしょうか?
それとも、押下しようとしても反応しない(ハイライトにもならない)のでしょうか。
また、背景にImageView(?)がありますが、ImageViewにボタンがaddSubviewされていたりしますでしょうか?
もしImageViewにaddSubviewされている状態だと、「"ImageViewの変数".isUserInteractionEnabled = true」を設定しないとボタンが反応しない場合があります。
※特にaddSubviewされていなかったら、ImageViewのくだりはスルーしてください。
tsuki様
ご回答ありがとうございます。
正常作動しましたか!
>「押下できない = ボタンのメソッドが呼ばれない」という認識でしょうか?
> それとも、押下しようとしても反応しない(ハイライトにもならない)のでしょうか。
→両方です。
addSubviewはしてないです。
う〜ん、なぜでしょう・・
挙動的には以下に近い気がするのですが、Storyboard側の設定やコード全文見てみないと判断難しいかもですね。。
・昨日記載したImageViewの関係(isUserInteractionEnabledプロパティ) <=addSubviewしてないのでないはず
・ボタンの上に見えないViewがのってしまっている
念の為確認ですが、「UITextField3つに入力ないとボタンを押せなくする」という処理がなかった場合は(ただボタンを置いていた状態だと)、ボタンは押せていましたでしょうか。
tsuki様
一回、storyBoardから、新規登録ボタンを消して、再作成したら、正常作動しました!
outletか、何かのつなぎ方が間違っていたのでしょうか。
原因ははっきりしませんが、結果オーライです!
ありがとうございました!
ご報告ありがとうございます。
期待した動作になったということで良かったです。
お手数ですが、自己解決ということで質問クローズの方、お願いいたします。
回答1件
あなたの回答
tips
プレビュー