Ich möchte ein AccessoryView auf einer Tastatur hinzufügen, die von einer UISearchBar aufgerufen wird. Da UISearchBar diese Eigenschaft nicht implementiert, habe ich gerade eine ToolBar erstellt. Nach Apples Dokumentation zu diesem Thema habe ich mich entschieden Verwenden Sie das Benachrichtigungscenter, um nicht nur zu wissen, wann die Tastatur aufgerufen wird, sondern auch, um die Größe der Tastatur zu kennen, die sich je nach Ausrichtung ändert.
Ich bin dem Beispiel in der Dokumentation gefolgt und bei der Methode keyboardWasShown
rufe ich eine Animation auf, die die ToolBar über der Tastatur anzeigt. Etwas wie das:
und bei der Animation setze ich den Rahmen der Toolbar wie folgt:
%Vor%wobei 44 die statische Höhe der Symbolleiste ist und der kbh die Tastatur.size.höhe ist, die von der obigen Methode übergeben wurde.
Das Problem, das ich beobachte ist, dass die vom userInfo
Dictionary angegebene Tastaturgröße immer auf die Hochformat-Ausrichtung verweist. Also, NSLog im Hochformat ist:
width: 320.0; heigth: 216.0
, was in Ordnung ist
Aber wenn ich die Ausrichtung auf Landschaft ändere und ich die Tastatur rufe, ist NSLog wie folgt:
width: 162.0; heigth: 480.0
, wodurch die Symbolleiste den Gültigkeitsbereich verlässt.
Ich habe also vor dem Aufruf der Animation eine Bedingung hinzugefügt, zum Beispiel:
%Vor%Ich frage mich nun, ob ich etwas falsch mache, weil ich Apples Beispiel genau befolge, um die Abhängigkeit von der Tastaturhöhe (als Float) zu vermeiden, und ich habe am Ende sowieso eine Orientierungsbedingung hinzufügen müssen / p>
Irgendwelche Ideen, was hier vor sich geht?
Tags und Links ios nsnotificationcenter uikeyboard device-orientation