一、键盘出现TableView的高 动态变化
有时候,当我们的键盘弹起时候挡住了部分TableView的视图,需要让他的高度发生变化,变的可以滑动到最低部。
这时候可以通过监听键盘的事件来做出相应的处理。
// 监听键盘改变
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChangeFrame:) name:UIKeyboardWillChangeFrameNotification object:nil];
我们这里监听的是** UIKeyboardWillChangeFrameNotification**,因为这样就可以在一个监听事件里处理所有事,不然写俩个是很难让强迫症接受的事情。
#pragma mark 监听键盘事件
- (void)keyboardWillChangeFrame:(NSNotification *)notification{
NSDictionary *info = [notification userInfo];
CGFloat duration = [[info objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue];
CGRect beginKeyboardRect = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue];
CGRect endKeyboardRect = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
CGFloat yOffset = endKeyboardRect.origin.y - beginKeyboardRect.origin.y;
[UIView animateWithDuration:duration animations:^{
_tableViewMM.height += yOffset;
}];
}
二、键盘出现ToolBarView动态变化
同样是上面的通知方法,在监听事件里处理transform
#pragma mark 监听键盘事件
- (void)keyboardWillChangeFrame:(NSNotification *)notification{
CGFloat keyboardY = [notification.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue].origin.y;
CGFloat ty = keyboardY - SCREEN_HEIGHT;
/**
* 像这种移动后又回到原始位置的建议使用transform,因为transform可以直接清零回到原来的位置
*/
[UIView animateWithDuration:duration animations:^{
self.toolBarView.transform = CGAffineTransformMakeTranslation(0, ty);
}];
}
在最后将监听注销掉
// 移除监听
- (void)dealloc{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
网友评论