前提・実現したいこと
TextFieldをタップしキーボードを表示させた後、何もないところをタップしキーボードをしまいたいです。
ストーリーボードにドラッグしたときにしまう。というオプションは発見しドラッグではしまえるようになったのですが、
タップした時にキーボードをしまうためにオーバーライドしたtouchesBeganのメソッドがTableViewの上ではうまく反応しないです。
何か方法があれば、ご教授願います。
該当のソースコード
Swift
1 //関係ないところをタップすると戻す。 2 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 3 if self.messageTextField.isFirstResponder == true { 4 self.messageTextField.resignFirstResponder() 5 } 6 }
試したこと
スクロールをドラッグでしまう。Returnキーでしまう。などの機能は問題なく動いております。
Swift
1 // キーボードが表示時に画面をずらす。 2 @objc func keyboardWillShow(_ notification: Notification?) { 3 guard let rect = (notification?.userInfo?[UIResponder.keyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue, 4 let duration = notification?.userInfo?[UIResponder.keyboardAnimationDurationUserInfoKey] as? TimeInterval else { return } 5 UIView.animate(withDuration: duration) { 6 let transform = CGAffineTransform(translationX: 0, y: -(rect.size.height)) 7 self.view.transform = transform 8 } 9 } 10 11 // キーボードが消えたときに、画面を戻す 12 @objc func keyboardWillHide(_ notification: Notification?) { 13 guard let duration = notification?.userInfo?[UIResponder.keyboardAnimationCurveUserInfoKey] as? TimeInterval else { return } 14 UIView.animate(withDuration: duration) { 15 self.view.transform = CGAffineTransform.identity 16 } 17 } 18 19 //キーボードでリターン押されると戻す。 20 func textFieldShouldReturn(_ textField: UITextField) -> Bool { 21 textField.resignFirstResponder() 22 return true 23 }
補足情報(FW/ツールのバージョンなど)
Xcode12.0 beta
SwiftUI 2.0
MacOS 10.15.0 Catalina
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。