teclado dividido para iPad

Estou criando um aplicativo semelhante ao aplicativo iMessage do iPad que faz mensagens. Portanto, há uma visão de entrada ancorada na parte inferior da visualização de mensagens e na exibição de acessórios de entrada quando o teclado é mostrado. Além disso, a exibição da mensagem deve ser redimensionada corretamente quando o teclado é exibido quando encaixado ou desacoplado.

O problema que tenho é que os dados de notificação que chegam de UIKeyboardWillChangeFrameNotification não são consistentes.

Primeiro, há três maneiras de o usuário desconectar o teclado:

Pressione e segure a tecla inferior direita e deslize para cimaPressione e segure a tecla inferior direita, quando o menu aparecer, selecione "desencaixar"Pressione e segure a tecla inferior direita, quando o menu aparecer, selecione "split"

Para o caso nº 1, os dados de notificação do UIKeyboardWillChangeFrameNotification são consistentes. Aqui estão os dados:

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

Para os casos 2 e 3, os dados são inconsistentes, eis o que recebo:

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}}";
}

O que é estranho aqui é que quando eu ouço UIKeyboardDidChangeFrameNotification no caso # 2 ou # 3, os dados chegam como esperado:

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

Por que os dados de notificação são diferentes? Alguém encontrou um caminho claro para detectar os eventos de teclado dividido?

questionAnswers(2)

yourAnswerToTheQuestion