您的位置:首页 > 其它

输入框被键盘遮挡时 让整个view上移

2016-08-12 16:14 393 查看
//监听键盘响应事件
[[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 *)notification {

//获取键盘高度,在不同设备上,以及中英文下是不同的
CGFloat kbHeight = [[notification.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size.height;

CGFloat originY = 0;//初始化,顶端的输入框不受键盘影响

if (_RedTextField.editing) {
originY = _RedTextField.frame.origin.y;
}else if (_GreenTextField.editing){
originY = _GreenTextField.frame.origin.y;
}else if (_BlueTextField.editing){
originY = _BlueTextField.frame.origin.y;
}else if (_WhiteTextField.editing){
originY = _WhiteTextField.frame.origin.y;
}

//计算出键盘顶端到TextField底端的距离(加上自定义的缓冲距离INTERVAL_KEYBOARD)
CGFloat offset = (originY + _WhiteTextField.frame.size.height + INTERVAL_KEYBOARD) - (self.view.frame.size.height - kbHeight);

//取得键盘的动画时间,这样可以在视图上移的时候更连贯

double duration = [[notification.userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];

//将视图上移计算好的偏移
if(offset > 0) {

[UIView animateWithDuration:duration animations:^{

self.view.frame = CGRectMake(0.0f, -offset, self.view.frame.size.width, self.view.frame.size.height);

}];
}

}

#pragma mark - 键盘消失事件
- (void)keyboardWillHide:(NSNotification *)notify {

//键盘动画时间
double duration = [[notify.userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];

//视图下沉恢复原状
[UIView animateWithDuration:duration animations:^{

self.view.frame = CGRectMake(0, 0, self.view.frame.size.width,
self.view.frame.size.height);

}];

}


转载自http://www.cocoachina.com/bbs/read.php?tid=317353
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: