tamanho do teclado dado pelo NSNotificationCenter

Eu quero adicionar um acessórioView em um teclado chamado de um UISearchBar. Como o UISearchBar não implementa essa propriedade, acabei de criar uma barra de ferramentas. SegueDocumentação da Apple sobre o assunto, eu decidi usar o centro de notificação não só para saber quando o teclado é chamado, mas também para saber o tamanho do teclado, que muda dependendo da orientação.

Eu segui o exemplo na documentação e, nokeyboardWasShown método, eu chamo uma animação que mostrará a barra de ferramentas no topo do teclado. Algo assim:

-(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];


}

e, na animação eu configurei o quadro da barra de ferramentas assim:

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

onde 44 é a altura estática da barra de ferramentas e o kbh é o keyboard.size.heigth passado do método acima.

O problema que estou observando é que o tamanho do teclado dado pelouserInfo O dicionário é sempre referenciado para a orientação retrato. Então, o NSLog na orientação retrato é:

width: 320.0; heigth: 216.0, ok

mas quando eu mudo a orientação para paisagem e eu chamo o teclado, o NSLog é o seguinte:

width: 162.0; heigth: 480.0, que coloca a barra de ferramentas fora do escopo.

então, acabei adicionando um condicional antes de chamar a animação, como esta:

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

Agora estou me perguntando se estou ou não fazendo algo errado, porque estou seguindo o exemplo da Apple precisamente para evitar a dependência da altura do teclado (como float) e acabei tendo que adicionar uma orientação condicional de qualquer maneira.

Alguma idéia do que está acontecendo aqui?

questionAnswers(1)

yourAnswerToTheQuestion