Несколько моментов: 1. Ваш пример кода не показывает его, но кажется, что вы отправляете все уведомления с помощью этого метода.Я рекомендую обрабатывать willView и willHide отдельно.Возможно, вам не нужно подписываться на didChangeFrame.
Что такое проверка shrunkViewHeight
Использование UIScreen здесь опасно, особенно для iPad или приложений, поддерживающих альбомную ориентацию.Вместо этого проверьте против view.frame.
Используете ли вы автоматическое расположение?В этом случае обратите внимание на обработку изменения путем изменения ограничения.
Вот пример кода для willShow, который должен помочь вам в вашем пути:
var viewFrame = view.frame
viewFrame.size.height -= keyboardRect.height
if viewFrame.contains(forwardButton.frame) {
return // Do nothing, button is visible
}
// Modify your button frame here