- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
//监听键盘事件
if ([[[UIDevice currentDevice] systemVersion] compare:@"5.0"] < 0) {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardChangeCallBack:) name:UIKeyboardWillShowNotification object:nil]; //键盘弹出事件
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardChangeCallBack:) name:UIKeyboardWillHideNotification object:nil]; //键盘收起事件
} else { //5.0.X回应changeFrame事件,5.1.x回应willShow事件和changeFrame事件,
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardChangeCallBack:) name:UIKeyboardWillShowNotification object:nil]; //键盘弹出事件
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardChangeCallBack:) name:UIKeyboardWillChangeFrameNotification object:nil]; //键盘区域变更事件
}
if ([CustomView canBecomeFirstResponder] && ![CustomView isFirstResponder]) {
[CustomView becomeFirstResponder];
}
}
//键盘事件回调
- (void)keyboardChangeCallBack:(NSNotification *)notification {
NSDictionary *userInfo = [notification userInfo];
CGRect keyboardFrame = [[userInfo valueForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
CGFloat keyboardDuration = [[userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue];
UIViewAnimationCurve keyboardCurve = [[userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue];
[UIView beginAnimations:@"keyboardAnimation" context:nil];
[UIView setAnimationBeginsFromCurrentState:TRUE];
[UIView setAnimationDuration:keyboardDuration];
[UIView setAnimationCurve:keyboardCurve];
CGRect textViewRect = CustomView.frame;
textViewRect.size.height = CGRectGetMinY(keyboardFrame) - 40 - CGRectGetHeight(self.navigationController.navigationBar.frame);
CustomView.frame = textViewRect;
[UIView commitAnimations];
}