监听键盘的弹出
为了避免键盘遮挡住输入框或者上方的视图
需要监听键盘的弹出
实现原理
首先 需要注册通知中心 当键盘的frame改变的时候 触发通知的方法
// 注册键盘的通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChangeFrame:) name:UIKeyboardWillChangeFrameNotification object:nil];
- (void)keyboardWillChangeFrame:(NSNotification*)note{
// 取出键盘动画的时间
CGFloat duration = [note.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue];
// 取得键盘最后的frame
CGRect keyboardFrame = [note.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
// 计算控制器的view需要平移的距离
CGFloat transformY = keyboardFrame.origin.y - self.view.frame.size.height;
// 执行动画
[UIView animateWithDuration:duration animations:^{
self.view.transform = CGAffineTransformMakeTranslation(0, transformY);
}];
}
最后要在销毁控制器的时候删除删除通知
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}