前提・実現したいこと
何も押されていない時
textFieldをタップした時
emailTextFieldをタップした時
入力に合わせてViewが動く様にしたのですが、再度TextFieldをタップし入力しようとするとpasswordTextFieldが隠れてしまいます。
タップした時のpasswordTextFieldが隠れない様にしたいのですが、何か方法はありますでしょうか?
この2つのテキストフィールドは、container viewという viewのなかに入っていて、segemented controlがsignupの時はcontainer viewの高さを+150pxして、パスワード確認用のテキストフィールドを1つcontainer viewに付け足しています。
###notificationCenter
NotificationCenter.default.addObserver(self, selector: #selector(ViewController.keyboardWillShow(_:)), name: UIResponder.keyboardWillShowNotification, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(ViewController.keyboardDidHide(_:)), name: UIResponder.keyboardDidHideNotification, object: nil)
@objc Method
@objc func keyboardWillShow(_ notification: NSNotification) { guard let keyboardFrame = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue, let duration = (notification.userInfo?[UIResponder.keyboardAnimationDurationUserInfoKey] as? TimeInterval) else { print("keyboardWillShow Error") return } loginButton.alpha = 1 loginOrSignupSegemented.alpha = 1 UIView.animate(withDuration: duration ,animations: { self.loginButton.alpha = 0 self.loginOrSignupSegemented.alpha = 0 self.containerView.frame.origin.y = self.view.frame.height - keyboardFrame.height - self.containerView.frame.height }, completion: nil) } @objc func keyboardDidHide(_ notification: NSNotification) { self.loginButton.alpha = 0 self.loginOrSignupSegemented.alpha = 0 UIView.animate(withDuration: 0.20, animations: { self.view.transform = CGAffineTransform.identity self.loginButton.alpha = 1 self.loginOrSignupSegemented.alpha = 1 }, completion: nil) }
swift5
xcode 11
説明されている現象がいまいちよく理解できませんでした。
TextFieldとは、email address を入れるフィールドのことでしょうか。
passwordTextFieldに何か文字を入れた後、再びemail Address を入れようとするとpasswordTextFieldが隠れてしまう、ということでしょうか。
一番最初にemail addressを入れる時には、passwordTextFieldは見えているのでしょうか。
その後、フォーカスをpasswordTextFieldに移動したあと、再びemail addressを入れようとするとpasswordTextFieldがキーボードで隠れてしまう、ということでしょうか。
もし可能であれば、第三者でも再現できるようなミニマムコードをご提示いただいた方が解決するかもしれません。
少なくとも、ご提示いただいているコードで試した範囲だと、TextFieldがキーボードで隠れることはない一方、フォーカスをはずしてもテキストフィールドは元の位置には戻りませんでした。
回答1件
あなたの回答
tips
プレビュー