开发过程中常常遇到底部文本输入框开始输入时需要移动到键盘的最上方,那么这个位置到底移动多少呢?
我们都知道键盘有系统的通知,通过注册通知获取当时键盘弹出后的高度
[[NSNotificationCenterdefaultCenter]addObserver:self
selector:@selector(keyboardWasShown:)
name:UIKeyboardWillShowNotificationobject:nil];
[[NSNotificationCenterdefaultCenter]addObserver:self
selector:@selector(keyboardWillBeHidden:)
name:UIKeyboardWillHideNotificationobject:nil]
- (void)keyboardWasShown:(NSNotification*)aNotification
{
NSDictionary* userInfo = [aNotification userInfo];
CGSize kbSize = [[userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
NSValue* aValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];
CGRect keyboardRect = [aValue CGRectValue];
}
平时我们在网上粘贴别人的代码多,想当然会使用第一个kbSize来获取键盘高度,这个是这个坑,有时候你感觉是对的,多测试你会看到会有偶发情况,kbSize得到的高度少于键盘实际高度,导致输入框显示异常,而且排查来排出去不知道什么原因,我就被它忽悠了,后面尝试使用了 UIKeyboardFrameEndUserInfoKey 得到的高度,就一切正常了!掉坑里的程序猿请注意了!