Tastaturgröße von NSNotificationCenter angegeben

Ich möchte eine Zubehöransicht auf einer Tastatur hinzufügen, die von einer UISearchBar aufgerufen wird. Da UISearchBar diese Eigenschaft nicht implementiert, habe ich gerade eine ToolBar erstellt. Im AnschlussApples Dokumentation Zu diesem Thema habe ich mich für das Benachrichtigungscenter entschieden, 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 habe das Beispiel in der Dokumentation und in der Anleitung befolgtkeyboardWasShown Nach dieser Methode rufe ich eine Animation auf, in der die Symbolleiste über der Tastatur angezeigt wird. Etwas wie das:

-(void)keyboardWasShown:(NSNotification*)aNotification {

    NSDictionary *info=[aNotification userInfo];
    CGSize keyboardSize=[[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;

     NSLog(@"width: %.1f; heigth: %.1f", keyboardSize.width, keyboardSize.height );

    [self showAccessoryView:keyboardSize.height];


}

und in der Animation setze ich den Rahmen der Symbolleiste wie folgt:

 self.auxiliaryKeyboardBar.frame=CGRectMake(0, self.view.frame.size.height-(44+kbh), self.view.frame.size.width, 44);

Dabei ist 44 die statische Höhe der Symbolleiste und kbh die keyboard.size.heigth, die von der obigen Methode übergeben wurde.

Das Problem, das ich beobachte, ist, dass die Tastaturgröße von der angegebenenuserInfo Das Wörterbuch bezieht sich immer auf das Hochformat. Das NSLog zur Hochformatausrichtung lautet also:

width: 320.0; heigth: 216.0, das ist ok

Wenn ich jedoch die Ausrichtung in Querformat ändere und die Tastatur aufrufe, sieht der NSLog folgendermaßen aus:

width: 162.0; heigth: 480.0, wodurch die Symbolleiste außer Reichweite gerät.

Daher habe ich vor dem Aufrufen der Animation eine Bedingung hinzugefügt, z.

if ([self deviceIsPortrait]==YES) {
        [self showAccessoryView:keyboardSize.height];
    }else if ([self deviceIsPortrait]==NO) {
        [self showAccessoryView:keyboardSize.width];
    }

Ich frage mich jetzt, ob ich etwas falsch mache oder nicht, weil ich genau dem Beispiel von Apple folge, um die Abhängigkeit von der Tastaturhöhe (als Float) zu vermeiden, und schließlich eine Orientierungsbedingung hinzufügen musste.

Irgendwelche Ideen, was hier los ist?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage