UITextView
の編集を開始するときにこのコードを使用して表示をスクロールしています。UITextViewのキーボードが表示され、同じビューにあるUITextFieldのキーボードが表示されない場合は、スクロール表示
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(Login.keyboardWillShow), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(Login.keyboardWillHide), name: NSNotification.Name.UIKeyboardWillHide, object: nil)
}
func keyboardWillShow(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
if self.view.frame.origin.y == 0{
self.view.frame.origin.y -= keyboardSize.height
}
}
}
func keyboardWillHide(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
if self.view.frame.origin.y != 0{
self.view.frame.origin.y += keyboardSize.height
}
}
}
しかし、私はまた、このビューの上部にUITextField
を持っている、と私はそれの編集を開始するときのビューにもスクロールします。私はこれが起こることを望んでいない。 UITextField
キーボードがアクティブになっているときに、UITextView
キーボードがアクティブなときにスクロールするようにコードを変更するにはどうすればよいですか?
原点をキーボードの高さで変更して盲目的にスクロールしないでください。新しい最初のレスポンダを表示させるためにスクロールする必要があるかどうかを計算します。 – rmaddy