У меня проблемы с iPad, клавиатурой и модалами в formSheet
(или pageSheet
, начиная с iOS 13).
Я разрабатываю чат, и у меня есть панель ввода, которую я хочу чтобы перемещаться над клавиатурой, когда она появляется, например WhatsApp и т.п. *
func keyboardDidShow(withFrame keyboardFrame: CGRect, notification: Notification) {
let viewFrame: CGRect
if #available(iOS 11.0, *) {
viewFrame = view.safeAreaLayoutGuide.layoutFrame
} else {
viewFrame = view.frame
}
let convertedKeyboardFrame = view.convert(keyboardFrame, from: nil)
let intersection = viewFrame.intersection(convertedKeyboardFrame)
updateBottomConstraint( // The bottom constraint of the input bar
constant: -intersection.height,
animationDuration: notification.keyboardAnimationDuration
)
}
Он работает для всех размеров экрана, версии и устройства, но для iPad с презентациями formSheet
или pageSheet
между нижней частью моей панели ввода и верхней частью клавиатуры есть свободное место.
В этой ситуации контроллер моего представления немного смещается вверх, чтобы освободить место для клавиатуры, разрушая мой код.
Я не хочу вычислять вещи или знать об окне или суперпредставлении, я хотел бы полагаться на направляющие компоновки или что-либо еще в рамках моего контроллера представления. Я не могу найти какую-либо информацию, связанную с этим, и я предполагаю, что это не так странно.
Есть идеи?