Я использую этот код для получения точного кадра клавиатуры каждый раз, когда он заканчивал изменение, поэтому, если вы смените клавиатуру на английский или смайлики, он будет каждый раз давать правильный кадр.
func keyboardWillChangeFrame(notification: NSNotification) {
if let keyboardFrame = (notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {
let keyboardHeight = keyboardFrame.size.height
print("keyboard height: \(keyboardHeight)")
self.bottomConstrainttypeTextView.constant = -keyboardHeight
self.view.layoutIfNeeded()
}
}
это как вы можете использовать это просто добавить наблюдателя для уведомления для триггера смены клавиатуры
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillChangeFrame(notification:)), name: NSNotification.Name.UIKeyboardWillChangeFrame, object: nil)