iOS 键盘弹出视图上移
首先明白两个概念
-坐标系
iOS坐标系原点都是左上角,无论哪种坐标系
-frame,bounds
两者都是CGRect结构,定义初始点的位置及长宽,不同的是frame是相对坐标,即相对于父视图的坐标,bounds是的绝对坐标,相对于根视图。
键盘弹出,改变的是当前视图相对父视图的位置,所以改变的是frame的坐标
常用的登陆视图
//textfield例子
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
CGFloat offset = self.view.frame.size.height -(textField.frame.origin.y+textField.frame.size.height+216+50);
if(offset<=0){
[UIView animateWithDuration:0.3 animations:^{
CGRect frame= self.view.frame;
frame.origin.y=offset;
self.view.frame=frame;
}];
}
return YES;
}
-(BOOL)textFieldShouldEndEditing:(UITextField *)textField{
[UIView animateWithDuration:0.3 animations:^{
//这样不行,不能直接修改origin
//self.view.frame.origin.y=0.0;
CGRect frame=self.view.frame;
frame.origin.y=0.0;
self.view.frame=frame;
}];
return YES;
}