質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

1179閲覧

textFieldにkeyboardで入力しようとすると下がってしまう。

atk_721

総合スコア62

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2020/05/01 07:35

編集2020/05/01 07:47

前提・実現したいこと

何も押されていない時
イメージ説明
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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TsukubaDepot

2020/05/01 08:28

説明されている現象がいまいちよく理解できませんでした。 TextFieldとは、email address を入れるフィールドのことでしょうか。 passwordTextFieldに何か文字を入れた後、再びemail Address を入れようとするとpasswordTextFieldが隠れてしまう、ということでしょうか。 一番最初にemail addressを入れる時には、passwordTextFieldは見えているのでしょうか。 その後、フォーカスをpasswordTextFieldに移動したあと、再びemail addressを入れようとするとpasswordTextFieldがキーボードで隠れてしまう、ということでしょうか。 もし可能であれば、第三者でも再現できるようなミニマムコードをご提示いただいた方が解決するかもしれません。 少なくとも、ご提示いただいているコードで試した範囲だと、TextFieldがキーボードで隠れることはない一方、フォーカスをはずしてもテキストフィールドは元の位置には戻りませんでした。
guest

回答1

0

ベストアンサー

viewのframeをいじった場合は、frameで戻してあげればいいのではないでしょうか?
CGAffineTransform.identityで戻したいならば、viewに対する変更はtransformをつかうというように、
Viewにたいする変更方法を統一して試してみたらどうなりますか?

投稿2020/05/01 09:30

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問