Sto creando un'app simile all'app iMessage dell'iPad che esegue la messaggistica. Quindi c'è una vista di input ancorata nella parte inferiore della visualizzazione dei messaggi e la vista degli accessori di input quando viene mostrata la tastiera. Anche la visualizzazione dei messaggi deve essere ridimensionata correttamente quando la tastiera viene visualizzata mentre è agganciata o sganciata.Tastiera split per iPad
Il problema è che i dati di notifica provenienti da UIKeyboardWillChangeFrameNotification non sono coerenti.
In primo luogo, ci sono 3 modi in cui l'utente può sganciare la tastiera:
- Premere e tenere premuto il tasto in basso a destra, poi scivolare fino
- Premere e tenere premuto il tasto in basso a destra, quando il menu si apre, selezionare "sganciare"
- Premere e tenere premuto il tasto in basso a destra, quando il menu si apre, selezionare "split"
Per il caso # 1, i dati di notifica da UIKeyboardWillChangeFrameNotification è consistere ent. Ecco i dati:
userInfo = {
UIKeyboardFrameBeginUserInfoKey = "NSRect: {{0, 0}, {768, 304}}";
}
Per il caso # 2 e # 3 i dati sono incoerenti, ecco quello che ricevo:
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}}";
}
Ciò che è strano è che quando ascolto per UIKeyboardDidChangeFrameNotification in caso 2 o 3, i dati arrivano come previsto:
userInfo = {
UIKeyboardFrameBeginUserInfoKey = "NSRect: {{0, 0}, {768, 304}}";
}
Perché i dati di notifica sono diversi? Qualcuno ha trovato un modo chiaro per rilevare gli eventi con tastiera divisa?
Questo renderà tutto più difficile da quando è stato introdotto iPad Mini. Non ho ancora toccato iOS 7 ancora ... –
nessuna differenza. 216 non è pixel, il suo punto parmeter è indipendente dalla risoluzione. Ma questo non funziona con iPhone 4s e 5. E l'iPhone non ha una tastiera divisa. Cambiano il fattore di forma. – Bimawa
Attenzione, questa non è una buona soluzione. Le altezze della tastiera cambiano a seconda delle impostazioni locali, della versione di iOS e del dispositivo. – capikaw