Я реализовал успешный фрагмент кода, чтобы переместить кнопку «Назад» и кнопку «Далее» в нижней части экрана, чтобы она находилась над клавиатурой, когда она отображается, и возвращается к значению по умолчанию, когда клавиатура исчезает с помощью Центра уведомлений.
Мне интересно, как бы я сделал то же самое, но когда в нижней части появляется всплывающее окно DatePicker?
Это код, который перемещает две мои кнопки внизу экрана над клавиатурой, когда он всплывает:
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(notification:)), name: UIResponder.keyboardWillShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(notification:)), name: UIResponder.keyboardWillHideNotification, object: nil)
@objc func keyboardWillShow(notification: NSNotification) {
guard let userInfo = notification.userInfo else {return}
guard let keyboardSize = userInfo[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue else {return}
let keyboardFrame = keyboardSize.cgRectValue
let animationDurarion = userInfo[UIResponder.keyboardAnimationDurationUserInfoKey] as! TimeInterval
UIView.animate(withDuration: animationDurarion, animations: { () -> Void in
self.backButton_constrant.constant += keyboardFrame.height
self.nextButton_constrant.constant += keyboardFrame.height
self.view.layoutIfNeeded()
})
}
@objc func keyboardWillHide(notification: NSNotification){
guard let userInfo = notification.userInfo else {return}
guard let keyboardSize = userInfo[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue else {return}
let keyboardFrame = keyboardSize.cgRectValue
let animationDurarion = userInfo[UIResponder.keyboardAnimationDurationUserInfoKey] as! TimeInterval
UIView.animate(withDuration: animationDurarion, animations: { () -> Void in
self.backButton_constrant.constant -= keyboardFrame.height
self.nextButton_constrant.constant -= keyboardFrame.height
self.view.layoutIfNeeded()
})
Теперь очевидно, что это работает только когда клавиатура всплывает, а не когда всплывающее окно выбора даты, как это:
Изображение того, как выглядит приложение
(Нарисованный овал - это то место, где должны быть кнопки, однако теперь они скрываются средством выбора даты.)
Спасибо