iPhone - weiß die Tastaturgröße, wenn sie bereits angezeigt wird

9

OK, ich weiß, dass ich die Tastaturgröße mit der Benachrichtigung UIKeyboardWillShowNotification und dieser

lesen kann %Vor%

aber dies wird nur verfügbar sein, wenn die Tastatur zeigt.

aber das Problem ist das: Ich habe ein Fenster, das sich an eine neue Position anpassen muss, wenn die Tastatur sichtbar ist und wenn sich das iPhone dreht. Wenn ich das iPhone rotiere, laufen beide Methoden willRotateToInterfaceOrientation und didRotateFromInterfaceOrientation und handle die Rotation. Innerhalb dieser Methoden muss ich die aktuelle Tastaturhöhe kennen, damit ich die Ansicht richtig positionieren kann. Das Problem ist, dass die von der UIKeyboardWillShowNotification-Benachrichtigung abgefeuerte Methode ausgeführt wird, nachdem die Rotation von den Delegate-Methoden behandelt wurde.

Die Reihenfolge der Methoden lautet:

  1. willRotateToInterfaceOrientation
  2. didRotateFromInterfaceOrientation
  3. UIKeyboardWillShowNotification-Methode

Mit anderen Worten, die Tastaturhöhe wird nur am Ende gelesen, was bedeutet, dass beide Methoden 1 und 2 die alte Tastaturhöhe verwenden.

Meine Frage ist: Gibt es eine Möglichkeit, die Tastaturhöhe einer sichtbaren Tastatur direkt zu lesen, statt sich auf Methoden zu verlassen, die von Benachrichtigungen ausgelöst werden?

Danke

    
SpaceDog 28.03.2011, 18:37
quelle

2 Antworten

4

Variante 1

Sie können dieses Code-Snippet verwenden, um die Ansichtshierarchie zu untersuchen:

%Vor%

Sie werden sehen, dass es ziemlich einfach ist, die Tastaturgröße anhand der Werte zu ermitteln, die Sie erhalten.

Variante 2

Alternativ können Sie UIKeyboard.h importieren (Sie finden es im Internet). Es enthält eine Methode zum Abrufen der Standardtastaturgröße für verschiedene Schnittstellenausrichtungen. Dies würde jedoch private APIs verwenden, daher sollten Sie vorsichtig sein.

    
ryyst 06.04.2011, 17:05
quelle
-1

Ich hatte ein Problem mit der Einstellung der Inhaltseinfügung von UIScrollView bei Rotation, wenn die Tastatur auch schon sichtbar war. Hier ist, was ich ausgearbeitet habe (und es beinhaltet keine Lösungen, die zu hacky sind).

Die Idee, dass Ihr View-Controller UIKeyboardWillShowNotification abonniert, ist korrekt und ist der beste Weg, dies zu tun - versuchen Sie nicht, die Tastaturgröße anders zu berechnen, da a) die Tastatur Die Größe kann unvorhersehbar sein, und b) Sie möchten nicht das Risiko eingehen, private APIs zu verwenden.

%Vor%

Und hier ist die keyboardWillShow -Methode. Wenn Sie UIKeyboardWillShowNotification verwenden - wie ich bin - sollten Sie die resultierende Tastaturgröße aus der UIKeyboardFrameEndUserInfoKey -Taste entfernen.

%Vor%

Ich hoffe, Ihnen hilft das - auch hier ist es absolut möglich und sicher, Benachrichtigungen zu verwenden, um zu erreichen, was Sie wollen.

    
Ben Kreeger 05.06.2013 16:53
quelle

Tags und Links