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

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

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

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

Q&A

0回答

476閲覧

UITableViewの中にあるUITextViewがキーボードに隠れてしまう問題

oeiqgfodgfhps

総合スコア35

Swift

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

0グッド

0クリップ

投稿2022/04/02 12:25

UITableViewの一つのUITableViewCellの中にUITextViewを配置しているのですが、Keyboardが表示されるとUITextViewが隠れてしまいます。他にもUITextFieldを置いているのですが、そちらはきちんとキーボードの上まで表示されます。

キーボードの表示に追随するコードはこちらです。

swift

1 func setupKeyboardNotification() { 2 NotificationCenter.default.addObserver(self, 3 selector: #selector(self.keyboardWillShow), 4 name: UIResponder.keyboardWillShowNotification, 5 object: nil) 6 NotificationCenter.default.addObserver(self, 7 selector: #selector(self.keyboardWillHide), 8 name: UIResponder.keyboardWillHideNotification, 9 object: nil) 10 } 11 12 @objc private func keyboardWillShow(_ notification: NSNotification?) { 13 guard 14 let userInfo = notification?.userInfo, 15 let rect = userInfo[UIResponder.keyboardFrameEndUserInfoKey] as? CGRect, 16 let duration = userInfo[UIResponder.keyboardAnimationDurationUserInfoKey] as? Double else { 17 return 18 } 19 let bottomMargin = 50.0 20 21 self.bottomConstraint.constant = -rect.size.height + bottomMargin 22 UIView.animate(withDuration: duration, animations: { 23 self.view.layoutIfNeeded() 24 }) 25 } 26 27 @objc private func keyboardWillHide(_ notification: NSNotification?) { 28 guard 29 let userInfo = notification?.userInfo, 30 let duration = userInfo[UIResponder.keyboardAnimationDurationUserInfoKey] as? Double else { 31 return 32 } 33 self.bottomConstraint.constant = 0 34 UIView.animate(withDuration: duration, animations: { 35 self.view.layoutIfNeeded() 36 }) 37 }

UITextViewがキーボードの上に表示されるようにするにはどのように修正すればよろしいでしょうか?

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

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

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

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

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

hoshi-takanori

2022/04/10 00:14

keyboardWillShow で self.view のサイズが変わり、それに合わせて tableView のサイズも変わるようになってると思いますが、その際にスクロール位置は変わらないために隠れてしまうのでは。サイズ変更後に、現在編集中のセルが見える位置に来るように scrollToRow メソッドでスクロールさせれば良いかも。 https://developer.apple.com/documentation/uikit/uitableview/1614997-scrolltorow
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問