У меня есть табличное представление с ячейками с textFields и кнопкой в конце, вне табличного представления, привязанной к нижнему якору. Мой код кажется хорошим для больших телефонов, но на iPhone 8 он терпит неудачу, с кнопкой, находящейся справа в верхней части вспомогательного вида клавиатуры (если имеется). Я думаю, это проблема класса c, но я не могу использовать другие решения для моего случая.
в моем viewDidLoad:
bindKeyboardNotifications(using: bottomContraintButtonSuperView, view: myTable)
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
//dismiss keyboard observer
NotificationCenter.default.removeObserver(self)
}
в расширении контроллера
///handles the scroll of the keyboard based on a given constraint outlet
func bindKeyboardNotifications(using constraint: NSLayoutConstraint, view: UITableView? = nil) {
NotificationCenter.default.addObserver(forName: UIApplication.keyboardWillShowNotification, object: nil, queue: nil) { notification in
let keyboardHeight: CGFloat = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue.height ?? 0
// constraint.constant = -20 + keyboardHeight
constraint.constant = keyboardHeight
}
NotificationCenter.default.addObserver(forName: UIApplication.keyboardWillHideNotification, object: nil, queue: nil) { _ in
constraint.constant = 20.0
}
}