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

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

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

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

Q&A

解決済

1回答

2125閲覧

[swift] 特定のtextfieldが選ばれた時にだけ、viewの位置をずらしたい。

Kaguya_4869

総合スコア116

Swift

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

0グッド

0クリップ

投稿2019/08/26 09:29

#質問したいこと
下の方にある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/
こちらのサイトを参考にさせてもらいました。

できれば、早めに回答していただけるとありがたいです。
よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

swift

1 2var selectedTextField: UITextField? 3 4func textFieldDidBeginEditing(_ textField: UITextField) { 5 selectedTextField = textField 6} 7 8func textFieldDidEndEditing(_ textField: UITextField) { 9 selectedTextField = nil 10} 11 12// キーボードが現れたときにviewをずらす 13@objc func keyboardWillShow(notification: Notification?) { 14 guard let selectedTextField = selectedTextField else { return } 15 if selectedTextField == mokuhyou2 { 16 ずらす処理 17 } 18

こんな感じで動かない?

投稿2019/08/26 15:57

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Kaguya_4869

2019/08/26 22:25

ありがとうございます! 無事動いてくれました。 早い段階での回答本当に感謝します!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問