У меня есть кнопка в моем swift
приложении, которое находится в нижней части экрана. Ограничения для этого являются:, когда клавиатура появляется в моем приложении, кнопка частично перемещается вверх (только текст кнопки перемещается)
Я также прилагается розетка для ограничения, отделяющей мою кнопку в нижней части экрана:
Когда я запустить приложение, я вижу, что я (я добавил некоторый цвет backgroun, чтобы мой пример был хорошо виден):
сейчас, странная вещь происходит - когда клавиатура показывает, текст на кнопке движется вверх, синий фон остается там, где это было:
А также видимая часть кнопки не нажимать на все.
Это какая-то ошибка или проблема в моей реализации?
Мой код достаточно прост для этого:
@IBOutlet weak var continueUsernameBottomConstraint: NSLayoutConstraint!
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
NotificationCenter.default.addObserver(self, selector: #selector(tutorialKeyboardWillAppear), name: .UIKeyboardWillShow, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(tutorialKeyboardWillDisappear), name: .UIKeyboardWillHide, object: nil)
}
func tutorialKeyboardWillAppear(notification: NSNotification){
print("KEYBOARD APPEARS")
let endFrame = ((notification as NSNotification).userInfo![UIKeyboardFrameEndUserInfoKey] as! NSValue).cgRectValue
continueUsernameBottomConstraint.constant = view.bounds.height - endFrame.origin.y
self.view.layoutIfNeeded()
}
func tutorialKeyboardWillDisappear(notification: NSNotification){
print("KEYBOARD DISAPPEARS")
let endFrame = ((notification as NSNotification).userInfo![UIKeyboardFrameEndUserInfoKey] as! NSValue).cgRectValue
continueUsernameBottomConstraint.constant = view.bounds.height - endFrame.origin.y
self.view.layoutIfNeeded()
}
continueUsernameBottomConstraint.constant = view.bounds.height - endFrame.origin.y в обоих keyboardWillAppear и исчезают не отлично смотрится для меня. Вместо этого, если вы хотите пойти с ограничением в keyboardWillAppear: continueUsernameBottomConstraint.constant = continueUsernameBottomConstraint.constant + keyBoardHeight и в willDisappear continueUsernameBottomConstraint.constant = continueUsernameBottomConstraint.constant - keyBoardHeight. – Dili
Предпочитаемый вариант Apple - использовать scrollView для случаев, где отображается клавиатура. Или в этом случае даже вы можете переместить весь экран вверх и добавить клавиатуру снизу. – Dili