我想从一个一个UISearchBar称为键盘上添加accessoryView的。 由于的UISearchBar没有实现这个属性,我刚刚创建了一个工具栏。 继苹果公司的文档就不管了,我已经决定使用通知中心不仅要知道当键盘被调用,但也知道键盘,它的变化取决于方向的尺寸。
我已经按照文件上的例子,并在keyboardWasShown
方法,我称之为动画,它会显示在键盘的顶部的工具栏。 事情是这样的:
-(void)keyboardWasShown:(NSNotification*)aNotification {
NSDictionary *info=[aNotification userInfo];
CGSize keyboardSize=[[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
NSLog(@"width: %.1f; height: %.1f", keyboardSize.width, keyboardSize.height );
[self showAccessoryView:keyboardSize.height];
}
并且,在动画我这样设置工具栏的框架:
self.auxiliaryKeyboardBar.frame=CGRectMake(0, self.view.frame.size.height-(44+kbh), self.view.frame.size.width, 44);
其中图44是在工具栏的静态高度和KBH从以上方法通过keyboard.size.heigth。
我观察到的问题是,由给定的键盘尺寸userInfo
字典总是refered到纵向。 因此,在纵向的NSLog的是:
width: 320.0; heigth: 216.0
width: 320.0; heigth: 216.0
,这是确定
但是当我改变方向为横向和我所说的键盘时,的NSLog如下:
width: 162.0; heigth: 480.0
width: 162.0; heigth: 480.0
,这使工具栏超出范围。
所以,我最终调用动画,如在此之前增加一个条件:
if ([self deviceIsPortrait]==YES) {
[self showAccessoryView:keyboardSize.height];
}else if ([self deviceIsPortrait]==NO) {
[self showAccessoryView:keyboardSize.width];
}
我现在想知道是否我做错了什么,因为我下面的苹果的例子正是为了避免对键盘高度依赖(float类型),我最后不得不添加条件一个方向反正。
这里发生了什么?