Как бы я переместить кнопки пользовательского интерфейса над UIDatePicker - PullRequest
0 голосов
/ 17 мая 2019

Я реализовал успешный фрагмент кода, чтобы переместить кнопку «Назад» и кнопку «Далее» в нижней части экрана, чтобы она находилась над клавиатурой, когда она отображается, и возвращается к значению по умолчанию, когда клавиатура исчезает с помощью Центра уведомлений.

Мне интересно, как бы я сделал то же самое, но когда в нижней части появляется всплывающее окно 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()
    })

Теперь очевидно, что это работает только когда клавиатура всплывает, а не когда всплывающее окно выбора даты, как это:

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

(Нарисованный овал - это то место, где должны быть кнопки, однако теперь они скрываются средством выбора даты.)

Спасибо

1 Ответ

0 голосов
/ 18 мая 2019

Я исправил это, поскольку средство выбора даты действует как клавиатура, поэтому я мог использовать тот же код, показанный в моем вопросе выше, также и для средства выбора даты.«NotificationCall» предназначен для любого всплывающего окна для пользовательского ввода.

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