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?