Podzielona klawiatura na iPada

Tworzę aplikację podobną do aplikacji iMessage na iPada, która obsługuje wiadomości. Na dole widoku wiadomości i widoku akcesoriów jest wyświetlany widok wejścia, gdy wyświetlana jest klawiatura. Również widok wiadomości musi zostać odpowiednio zmieniony, gdy klawiatura jest wyświetlana podczas zadokowania lub oddokowania.

Mam problem z tym, że dane powiadomień pochodzące z UIKeyboardWillChangeFrameNotification nie są spójne.

Po pierwsze, istnieją 3 sposoby, aby użytkownik mógł oddokować klawiaturę:

Naciśnij i przytrzymaj dolny prawy klawisz, a następnie przesuń w góręNaciśnij i przytrzymaj dolny prawy klawisz, gdy pojawi się menu, wybierz „Oddokuj”Naciśnij i przytrzymaj dolny prawy klawisz, gdy pojawi się menu, wybierz „podziel”

W przypadku # 1 dane powiadomienia z UIKeyboardWillChangeFrameNotification są spójne. Oto dane:

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

W przypadku # 2 i # 3 dane są niespójne, oto co otrzymuję:

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

Dziwne jest to, że gdy słucham UIKeyboardDidChangeFrameNotification w przypadku # 2 lub # 3, dane przychodzą zgodnie z oczekiwaniami:

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

Dlaczego dane powiadomień są różne? Czy ktoś znalazł jasny sposób na wykrycie wydarzeń z podzieloną klawiaturą?

questionAnswers(2)

yourAnswerToTheQuestion