ストーリーボードに素朴にUITextViewを置いています。

import UIKit

class ViewController: UIViewController, UITextViewDelegate {
    @IBOutlet weak var hogeTextView: UITextView!

    override func viewDidLoad() {
        super.viewDidLoad()

        self.hogeTextView.delegate = self

        NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillChange), name: UIResponder.keyboardWillChangeFrameNotification, object: nil)
        NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil)
    }

    @objc func keyboardWillChange(notification: NSNotification) {
        guard let keyboardSize = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? CGRect else { return }

        self.view.frame.origin.y = UIScreen.main.bounds.origin.y - keyboardSize.height
    }

    @objc func keyboardWillHide(notification: NSNotification) {
        guard self.view.frame.origin.y != 0 else { return }

        self.view.frame.origin.y = 0
    }

    func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {

        if (text == "\n") {
            hogeTextView.resignFirstResponder()
            return false
        }
        return true
    }
}

上記コードについてです。

self.view.frame.origin.y = UIScreen.main.bounds.origin.y - keyboardSize.height

の部分と

self.view.frame.origin.y = 0

についてアニメーション処理を入れていないにもかかわらず、キーボードがせり上がってくる速度と同じ速度で、UITextViewがアニメーション付きでせり上がります(厳密にはせり上がっているのは self.view)。何故でしょうか?