сплит-клавиатура для iPad

Я создаю приложение, похожее на приложение iMessage для iPad, которое отправляет сообщения. Таким образом, есть вид ввода, закрепленный в нижней части вида сообщения, и вид вспомогательного ввода при отображении клавиатуры. Кроме того, размер сообщения должен быть соответствующим образом изменен, когда клавиатура отображается, когда она установлена или отсоединена.

Проблема, с которой я столкнулся, заключается в том, что данные уведомлений, поступающие из UIKeyboardWillChangeFrameNotification, не согласованы.

Во-первых, есть 3 способа отсоединения клавиатуры от пользователя:

Нажмите и удерживайте нижнюю правую клавишу, затем сдвиньте вверх Нажмите и удерживайте нижнюю правую клавишу, когда появится всплывающее меню, выберите «открепить» Нажмите и удерживайте нижнюю правую клавишу, когда появится всплывающее меню, выберите «разделить»

Для случая № 1 данные уведомления от UIKeyboardWillChangeFrameNotification согласованы. Вот данные:

userInfo = {
    UIKeyboardFrameBeginUserInfoKey = "NSRect: {{0, 0}, {768, 304}}";
}

Для случаев № 2 и № 3 данные противоречивы, вот что я получаю:

userInfo = {
    UIKeyboardAnimationCurveUserInfoKey = 0;
    UIKeyboardAnimationDurationUserInfoKey = "0.25";
    UIKeyboardBoundsUserInfoKey = "NSRect: {{0, 0}, {768, 304}}";
    UIKeyboardCenterBeginUserInfoKey = "NSPoint: {384, 872}";
    UIKeyboardCenterEndUserInfoKey = "NSPoint: {384, 1136}";
    UIKeyboardFrameBeginUserInfoKey = "NSRect: {{0, 0}, {768, 304}}";
    UIKeyboardFrameChangedByUserInteraction = 0;
    UIKeyboardFrameEndUserInfoKey = "NSRect: {{0, -264}, {768, 304}}";
}

Странно, что когда я слушаю UIKeyboardDidChangeFrameNotification в случае № 2 или № 3, данные поступают, как и ожидалось:

userInfo = {
    UIKeyboardFrameBeginUserInfoKey = "NSRect: {{0, 0}, {768, 304}}";
}

Почему данные уведомления отличаются? Кто-нибудь нашел четкий способ обнаружения событий с разделенной клавиатурой?

Ответы на вопрос(2)

Ваш ответ на вопрос