我们在开发中经常遇见,键盘弹出后,直接把输入框给遮挡了,用户看不见自己输入的什么,这个时候我们就需要把视图上移指定距离把输入框显示出来
//监听键盘弹出
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
//监听键盘消失
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
#pragma mark监听键盘弹出,计算计算高度
-(void)keyboardWillShow:(NSNotification*)note{
//键盘的高度
CGRect keyBoardRect=[note.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
//取出键盘弹出需要花费的时间
double duration = [note.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue];
//如果键盘的高度遮盖住了买入或者卖出的按钮,那么就上移表格cell,(控件的位置如果大于屏幕的高减去键盘的高,这个就是遮挡住该控件了,那么就需要上移视图)
if((self.cell.buyOrSellBtn.frame.origin.y+self.cell.buyOrSellBtn.frame.size.height) > (ScreenHeight-keyBoardRect.size.height)){
[UIView animateWithDuration:duration animations:^{
//这里视图上移的时间就是键盘弹出的时间,同时进行,那么具体上移多少,导航条高度加上控件的位置-屏幕的高度减去键盘的高度
self.tbv.contentOffset=CGPointMake(0,SafeAreaTopHeight+self.cell.buyOrSellBtn.frame.origin.y+self.cell.buyOrSellBtn.frame.size.height- (ScreenHeight- keyBoardRect.size.height));
}];
}
}
#pragma mark键盘消失,视图最初位置
-(void)keyboardWillHide:(NSNotification*)note{
self.tbv.contentOffset=CGPointMake(0, 0);
}
网友评论