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ą?