На экране у меня несколько тестовых полей для регистрации. Чтобы клавиатура не перекрывала поля, меняю ограничение. Но возникла проблема. Эти поля появляются на больших экранах, где это не требуется. Как мне избавиться от него и изменить ограничение, когда это действительно необходимо.
ViewController.swift
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: UIResponder.keyboardWillShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil)
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
NotificationCenter.default.removeObserver(self)
}
@objc func keyboardWillShow(notification: NSNotification) {
var keyboardHeight = CGFloat(0.0)
if let keyboardFrame: NSValue = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue {
let keyboardRectangle = keyboardFrame.cgRectValue
keyboardHeight = keyboardRectangle.height
}
UIView.animate(withDuration: 3) {
self.viewBottomConstraint.constant = keyboardHeight + 5
self.topIconConstraint.constant = 40
self.view.layoutIfNeeded()
}
}
@objc func keyboardWillHide() {
self.view.layoutIfNeeded()
UIView.animate(withDuration: 1) {
self.viewBottomConstraint.constant = 250
self.topIconConstraint.constant = 150
self.view.layoutIfNeeded()
}
}