Вы должны прислушиваться к изменениям размера клавиатуры и корректировать остальную часть своего контента таким образом, поскольку, как вы узнали, клавиатуры iOS могут изменять размер. Вы должны подписаться на UIResponder.keyboardWillChangeFrameNotification
и / или UIResponder.keyboardDidChangeFrameNotification
, которые являются уведомлениями, которые срабатывают, когда рамка клавиатуры изменится или изменилась. Вот пример его использования:
// Somewhere in set up code
NotificationCenter.default.addObserver(self, selector: #selector(keyboardDidChangeFrame),
name: UIResponder.keyboardDidChangeFrameNotification, object: nil)
// Function elsewhere in your class
@objc func keyboardDidChangeFrame(_ notification: Notification) {
guard let kbSize = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey]
as? CGRect else {
return;
}
// Use kbRect as you initially did
}
Обратите внимание, что вы можете использовать уведомления либо Will
, либо Did
в зависимости от того, как вы хотите, чтобы изменение макета выглядело. Вы также можете запросить как UIResponder.keyboardFrameBeginUserInfoKey
UIResponder.keyboardFrameEndUserInfoKey
, чтобы получить кадр клавиатуры до и после изменения размера, что может быть полезно, если вы хотите анимировать свой макет вместе с клавиатурой.