質問失礼します。
現在スクロールビューとコンテナビューを併用してページを作成しており、
最下部にあるテキストビューが押下された時だけキーボード表示と共に画面をずらす処理を加えたいと思っています。
調べながらコードを記載して画面をずらす処理自体は正常に動く事を確認したのですが、
一部だけに適用する為の条件式を下記の様に加えたところ、適用されませんでした。
let subVC = self.children.first as? RegistrationViewController
のタイミングで結果をprintすると、条件式の結果がfalseのままなのですが、
これは何が原因なのでしょうか。
どなたかご教授いただけますと嬉しいです。
よろしくお願い致します。
・コンテナビューの記載
swift
1 ///キーボードが表示された時、画面をずらす対象のTextViewが押下されたかの確認用フラグ 2 var selectedTextView = false 3 4 ///textViewが押下された時 5 func textViewDidBeginEditing(_ textView: UITextView) { 6 //対象のtextViewだった場合、スクロール対象のフラグをtrueにする 7 switch textView { 8 case commentTextView: 9 selectedTextView = true 10 default: 11 break 12 } 13 }
・親ビューの記載
swift
1 /// キーボードが現れたときにviewをずらす 2 @objc func keyboardWillShow(notification: Notification?) { 3 4 //コンテナビューにアクセスする 5 let subVC = self.children.first as? RegistrationViewController 6*このタイミングでselectedTextViewをprintするとfalseになってしまう* 7 //textViewが押下された場合 8 if subVC?.selectedTextView == true { 9 //viewの位置をずらす 10 let rect = (notification?.userInfo?[UIResponder.keyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue 11 let duration: TimeInterval? = notification?.userInfo?[UIResponder.keyboardAnimationDurationUserInfoKey] as? Double 12 UIView.animate(withDuration: duration!) { 13 self.view.transform = CGAffineTransform(translationX: 0, y: -(rect?.size.height)!) 14 }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/23 11:53
退会済みユーザー
2020/04/23 13:02
2020/04/23 15:09