Q&A
#質問したいこと
下の方にあるtextfieldが選ばれた時だけ、画面を上にずらしたいです。
今は、上の方にあるtextFieldの時にも画面が上にずらされてしまっているので、特定のtextFieldに入力する時だけ、画面をずらすようにしたいです。
#コード
swift
1 var scrollView = UIScrollView() 2 3 @IBOutlet weak var testdatefield: UITextField!//ずらさない 4 5 @IBOutlet weak var mokuhyou1: UITextField!//ずらさない 6 7 @IBOutlet weak var mokuhyou2: UITextField!//ずらす 8 9 @IBOutlet weak var mokuhyou3: UITextField!//ずらす 10 11 override func viewDidLoad() { 12 super.viewDidLoad() 13 14 self.scrollView.delegate = self 15 self.scrollView.frame.size = CGSize(width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height) 16 17 // scrollViewを設置 18 self.scrollView.addSubview(self.mokuhyou2) 19 self.scrollView.addSubview(self.mokuhyou3) 20 21 self.view.addSubview(self.scrollView) 22 23 self.view.sendSubviewToBack(scrollView) 24 25 mokuhyou1.delegate = self 26 mokuhyou2.delegate = self 27 mokuhyou3.delegate = self 28 29 // textfieldの枠を表示する. 30 self.mokuhyou1.borderStyle = UITextField.BorderStyle.roundedRect 31 self.mokuhyou2.borderStyle = UITextField.BorderStyle.roundedRect 32 self.mokuhyou3.borderStyle = UITextField.BorderStyle.roundedRect 33} 34 35 func textFieldShouldReturn(_ textField: UITextField) -> Bool { 36 mokuhyou1.resignFirstResponder() 37 mokuhyou2.resignFirstResponder() 38 mokuhyou3.resignFirstResponder() 39 40 return true 41 } 42 43 44 45 override func viewWillAppear(_ animated: Bool) { 46 super.viewWillAppear(animated) 47 // Notificationの発行 48 self.configureObserver() 49 } 50 51 52 // Notificationを設定 53 func configureObserver() { 54 55 let notification = NotificationCenter.default 56 57 notification.addObserver( 58 self, 59 selector: #selector(self.keyboardWillShow(notification:)), 60 name: UIResponder.keyboardWillShowNotification, 61 object: nil 62 ) 63 64 notification.addObserver( 65 self, 66 selector: #selector(self.keyboardWillHide(notification:)), 67 name: UIResponder.keyboardWillHideNotification, 68 object: nil 69 ) 70 } 71 72 // Notificationを削除 73 func removeObserver() { 74 NotificationCenter.default.removeObserver(self) 75 } 76 77 // キーボードが現れたときにviewをずらす 78 @objc func keyboardWillShow(notification: Notification?) { 79 let rect = (notification?.userInfo?[UIResponder.keyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue 80 let duration: TimeInterval? = notification?.userInfo?[UIResponder.keyboardAnimationDurationUserInfoKey] as? Double 81 UIView.animate(withDuration: duration!) { 82 self.view.transform = CGAffineTransform(translationX: 0, y: -(rect?.size.height)!) 83 } 84 } 85 86 // キーボードが消えたときにviewを戻す 87 @objc func keyboardWillHide(notification: Notification?) { 88 let duration: TimeInterval? = notification?.userInfo?[UIResponder.keyboardAnimationCurveUserInfoKey] as? Double 89 UIView.animate(withDuration: duration!) { 90 self.view.transform = CGAffineTransform.identity 91 } 92 }
#やってみたこと
https://logist3.com/swift-uitextfield-not-hide/
こちらのサイトを参考にさせてもらいました。
できれば、早めに回答していただけるとありがたいです。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2019/08/26 22:25