В приложении, которое я создаю, у меня есть текстовое поле с кнопкой в нижней части экрана, и я хочу анимировать их при появлении клавиатуры.
Для этого я использую это:
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillShow), name: UIResponder.keyboardWillShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil)
}
@objc func keyboardWillShow(notification: Notification) {
let keyboardSize = (notification.userInfo? [UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue
let keyboardHeight = keyboardSize?.height
if #available(iOS 12.0, *) {
self.submitConstraint.constant = (keyboardHeight! - view.safeAreaInsets.bottom) + 10
}
else {
self.submitConstraint.constant = view.safeAreaInsets.bottom + 10
}
UIView.animate(withDuration: 0.5){
self.view.layoutIfNeeded()
}
}
@objc func keyboardWillHide(notification: Notification){
self.submitConstraint.constant = 34 // or change according to your logic
UIView.animate(withDuration: 0.5){
self.view.layoutIfNeeded()
}
}
, но затем часть кнопки скрывается под панелью инструментов предложений.
Я гуглил это и нашел ответ: Как получить высоту клавиатуры, включая панель предложений, в swift . Я попробовал ответы, и у меня не получилось, часть кнопки все еще скрыта под панелью предложений.
Может ли кто-нибудь мне помочь?
Спасибо!