Когда клавиатура отображается, я хочу измерить высоту клавиатуры и посмотреть на нее.
В приведенном ниже коде вид повышен, но отклонен.
Процесс:
- Создать вид
- Установить ограничение (isHidden = true)
- Получить высоту клавиатуры
- Обновление ограничения (isHidden = false)
Код:
class CompanyDetailViewController: UIViewController {
var applyView: ApplyView!
private var applyViewBottom: NSLayoutConstraint?
override func viewDidLoad() {
super.viewDidLoad()
// Create view and set constraint
self.applyView = UINib(nibName: "ApplyView", bundle: nil).instantiate(withOwner: self, options: nil)[0] as! ApplyView
view.addSubview(self.applyView)
self.applyView.translatesAutoresizingMaskIntoConstraints = false
self.applyView.heightAnchor.constraint(equalToConstant: 204)
self.applyView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
self.applyView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
let applyViewBotttom = self.applyView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 0)
applyViewBotttom.isActive = true
self.applyViewBottom = applyViewBotttom
addNotification()
}
private func addNotification() {
NotificationCenter.default.addObserver(self,
selector: #selector(keyboardWillShowNotification(notification:)),
name: .UIKeyboardWillShow,
object: nil)
}
@objc func keyboardWillShowNotification(notification: NSNotification) {
guard let userInfo = notification.userInfo as? [String: Any] else {
return
}
guard let keyboardInfo = userInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue else {
return
}
guard let duration = userInfo[UIKeyboardAnimationDurationUserInfoKey] as? Double else {
return
}
// Get keyboard's height and update constraint
self.applyView.isHidden = false
self.applyViewBottom?.constant = -keyboardInfo.cgSizeValue.height
UIView.animate(withDuration: duration) {
self.view.layoutIfNeeded()
}
}
}