Перемещение меню при открытии клавиатуры (Swift) - PullRequest
1 голос
/ 21 февраля 2020

У меня проблемы с функцией "клавиатураWillShown". Так что я хочу, чтобы мое меню отображалось точно над клавиатурой, когда оно открывается. Он отлично работает на Iphone 8 плюс, 8, 7, 6. Но когда я запускаю Iphone 11 на симуляторе, результат выглядит следующим образом.

Изображение того, как это выглядит в Iphone 11

Ограничения

Вот мой код:

@objc func keyboardWillShown(notification: NSNotification) {
    let info = notification.userInfo!
    let keyboardFrame: CGRect = (info[UIResponder.keyboardFrameEndUserInfoKey] as! NSValue).cgRectValue

    UIView.animate(withDuration: 0.1, animations: { () -> Void in
        self.keyboardConstrains.constant = keyboardFrame.size.height
    })
}

Функция вызова

override func viewWillAppear(_ animated: Bool) {
    NotificationCenter.default.addObserver( self, selector: #selector(keyboardWillShown(notification:)), name:  UIResponder.keyboardWillShowNotification, object: nil )
}

override func viewWillDisappear(_ animated: Bool) {
    NotificationCenter.default.removeObserver( self,name:  UIResponder.keyboardWillShowNotification, object: nil )
}

Ответы [ 2 ]

1 голос
/ 21 февраля 2020

Вы можете установить ограничения в зависимости от размера вашего экрана

if self.view.height >= 800{ //For bigger screens (X ,11)
    self.keyboardConstrains.constant = keyboardFrame.size.height - 50
} else {
    self.keyboardConstrains.constant = keyboardFrame.size.height
}
0 голосов
/ 21 февраля 2020
let window = UIApplication.shared.keyWindow
let bottomPadding = window?.safeAreaInsets.bottom
keyboardConstrains.constant = (keyboardSize?.height)! - (bottomPadding ?? 0)

Это потому, что все выемки iPhone (X, Xr, iPhone11 и т. Д. 1004 *) также имеют безопасную область внизу, поэтому высоту клавиатуры рассчитывают на главном экране, и вы устанавливаете "клавиатура-ограничение" из безопасной области, которая почему это пространство прибывает. Чтобы удалить это пространство, вы должны проверить, есть ли безопасная область внизу, чем минус пространство снизу от высоты клавиатуры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...