iPad Split-Tastatur

9

Ich erstelle eine App, die der iMessage App des iPads ähnlich ist, die Nachrichten versendet. Es gibt also eine Eingabeansicht, die am unteren Rand der Nachrichtenansicht verankert ist und die Zubehöransicht eingibt, wenn die Tastatur angezeigt wird. Außerdem muss die Nachrichtenansicht korrekt angepasst werden, wenn die Tastatur während des Andockens oder Abdockens angezeigt wird.

Das Problem, das ich habe, ist, dass die Benachrichtigungsdaten, die von UIKeyboardWillChangeFrameNotification kommen, nicht konsistent sind.

Erstens gibt es drei Möglichkeiten, wie der Benutzer die Tastatur abdocken kann:

  1. Halten Sie die untere rechte Taste gedrückt und schieben Sie sie nach oben
  2. Drücken und halten Sie die untere rechte Taste, wenn das Menü erscheint, wählen Sie "Abdocken"
  3. Drücken und halten Sie die untere rechte Taste, wenn das Menü erscheint, wählen Sie "split"

Für Fall 1 sind die Benachrichtigungsdaten von UIKeyboardWillChangeFrameNotification konsistent. Hier sind die Daten:

%Vor%

Für den Fall # 2 und # 3 sind die Daten inkonsistent, hier ist, was ich erhalte:

%Vor%

Was ist seltsam hier ist, dass, wenn ich für UIKeyboardDidChangeFrameNotification in Fall # 2 oder # 3 zu hören, die Daten wie erwartet eintreffen:

%Vor%

Warum unterscheiden sich die Benachrichtigungsdaten? Hat jemand einen klaren Weg gefunden, die Split-Keyboard-Ereignisse zu erkennen?

    
Takeshi Kaga 25.05.2012, 06:08
quelle

2 Antworten

3

Keine klare Methode nicht.

Ich löse dieses Problem in den nächsten Schritten:

  1. Aktuelle Orientierung erhalten.
  2. Wenn die Ausrichtung Landscape ist, erhalte ich height von UIKeyboardFrameEndUserInfoKey. es muss gleich 216 sein. Es bedeutet Tastatur ist Split-Modus, Else nicht;
  3. Wenn die Ausrichtung Portrait ist, dann bekomme ich height von UIKeyboardFrameEndUserInfoKey. es muss gleich 216 sein. Es bedeutet Tastatur ist Split-Modus, Else nicht;

Ich aktualisiere meinen Text zum Beispiel. Mit der Methode convertRect.

    
Bimawa 10.07.2013, 09:35
quelle
1

Dies ist ein etwas hacky, aber zuverlässige Möglichkeit, um festzustellen, ob die Tastatur geteilt ist.

%Vor%

Damit dies funktioniert, brauchen Sie natürlich eine UITextField / UITextView mit einem nicht-nil inputAccessoryView (Sie können dafür einfach eine leere Ansicht verwenden).

Hinweis: Das Verhalten von textField.inputAccessoryView.superview ist sehr heikel und hängt normalerweise davon ab, dass die Tastatur einmal aufgerufen wurde, bevor superview aufgerufen wurde. Um den App Store-Übermittlungsprozess zu bestehen, habe ich das Präfix 'UI' aus den privaten Klassennamen entfernt. Das ist keine Garantie Apple wird Ihre App nicht kennzeichnen, aber dieser Ansatz wurde zuvor erfolgreich verwendet.

Ich habe es nur auf iOS7 getestet, aber wenn es bei anderen Versionen von iOS nicht funktioniert, könnten ähnliche Ansätze verwendet werden.

    
cagey 15.03.2014 00:09
quelle