In einigen Fällen möchte ich oben auf der iPhone-Tastatur eine Symbolleiste hinzufügen (wie beispielsweise in iPhone Safari, wenn Sie durch Formularelemente navigieren).
Derzeit spezifiziere ich das Rechteck der Symbolleiste mit Konstanten. Da sich jedoch andere Elemente der Benutzeroberfläche im Fluss befinden - Symbolleisten und Navigationsleisten am oberen Bildschirmrand -, wird die Symbolleiste bei jeder geringfügigen Änderung der Benutzeroberfläche nicht mehr richtig ausgerichtet.
Gibt es eine Möglichkeit, die Position der Tastatur in Bezug auf die aktuelle Ansicht programmgesteuert zu bestimmen?
quelle
Also im Grunde genommen:
In der init-Methode:
Und dann haben Sie die oben genannten Methoden, um die Position des Balkens anzupassen:
Könnte es hübsch machen, indem die Positionsänderung durch Einwickeln animiert wird
quelle
UIKeyboardFrameBeginUserInfoKey
, die die gleichen Informationen geben.UIKeyboardFrameEndUserInfoKey
, um das endgültige Bild (in Bildschirmkoordinaten) der Tastatur zu erhalten. Sie können auch die restlichen Parameter verwendenUIKeyboardAnimationDurationUserInfoKey
undUIKeyboardAnimationCurveUserInfoKey
abrufen, um sie genau an das Verhalten der Tastatur anzupassen.Dies basiert auf der vorhandenen Antwort von tonklon - ich füge nur ein Code-Snippet hinzu, das eine halbtransparente schwarze Symbolleiste oben auf der Tastatur sowie eine Schaltfläche "Fertig" rechts anzeigt:
und das
-resignKeyboard
sieht aus wie:Hoffe das hilft jemandem.
quelle
Wenn Sie sich für Tastaturbenachrichtigungen registrieren, z. B.
UIKeyboardWillShowNotification
UIKeyboardWillHideNotification
usw., enthält die Benachrichtigung, die Sie erhalten, die Grenzen der Tastatur inuserInfo
dict (UIKeyboardBoundsUserInfoKey
).Siehe die
UIWindow
Klassenreferenz.quelle
In Version 3.0 und höher können Sie die Animationsdauer und -kurve aus dem
userInfo
Wörterbuch der Benachrichtigungen abrufen.Um beispielsweise die Größe der Ansicht zu animieren, um Platz für die Tastatur zu schaffen, registrieren Sie sich für die
UIKeyboardWillShowNotification
und gehen Sie wie folgt vor:Machen Sie eine ähnliche Animation für
UIKeyboardWillHideNotification
.quelle
Erstellen Sie diese Methode und rufen Sie sie in ViewWillLoad auf:
quelle
Es gibt keine Möglichkeit (AFAIK), die Abmessungen der Tastaturansicht abzurufen. Es ist jedoch konstant, zumindest in jeder iPhone-Version bisher.
Wenn Sie die Position der Symbolleiste als Versatz von UNTEN Ihrer Ansicht berechnen und die Größe Ihrer Ansicht berücksichtigen, sollten Sie sich keine Sorgen machen müssen, ob eine Navigationsleiste vorhanden ist oder nicht.
Z.B
Anstelle einer Definition können Sie auch einfach eine
keyboardHeight
Funktion erstellen , die die Größe basierend auf der Anzeige der Tastatur zurückgibt, und diese Symbolleistenpositionierung in eine separate Funktion verschieben, die Ihr Layout neu organisiert.Dies kann auch davon abhängen, wo Sie diese Positionierung vornehmen, da sich die Größe Ihrer Ansicht je nach Konfiguration der Navigationsleiste möglicherweise zwischen Laden und Anzeigen ändert. Ich glaube, der beste Ort dafür wäre viewWillAppear.
quelle