1.初始化输入框,监听输入框開始编辑和结束编辑
//password输入框
UITextField *loginInputPasswordStr = [UITextField inputTextWithImage:[UIImage imageNamed:@"Password"] placeholderText:NSLocalizedString(@"Password", nil)];
loginInputPasswordStr.frame = RectMakeWithPercent(24/375.0, 385/667.0, 327/375.0, 48/667.0);
//设置键盘类型
loginInputPasswordStr.keyboardType = UIKeyboardTypeDefault;
//设置暗文
[loginInputPasswordStr setSecureTextEntry:YES];
//监听password输入框文字開始输入
[loginInputPasswordStr addTarget:self action:@selector(loginInputPasswordStrInputBegin) forControlEvents:UIControlEventEditingDidBegin];
//监听password输入框文字结束输入
[loginInputPasswordStr addTarget:self action:@selector(loginInputPasswordStrInputEnd) forControlEvents:UIControlEventEditingDidEnd];
[self.view addSubview:loginInputPasswordStr];
2.開始编辑时视图上移,结束编辑或点击屏幕时恢复初始位置.
//loginInputPasswordStr监听方法
-(void)loginInputPasswordStrInputBegin{
[self moveView];
}
-(void)loginInputPasswordStrInputEnd{
[self resumeView];
}
// 点击屏幕取消输入,恢复视图初始位置
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
[self.view endEditing:YES];
[self resumeView];
}
3.主体方法!
#pragma mark - 点击输入框视图总体上移/恢复
//恢复原始视图位置
-(void)resumeView
{
NSLog(@"恢复原始视图位置之前self.view.origin.y :%f",self.view.origin.y);
//当视图上移130像素时->
if (self.view.frame.origin.y == -130) {
NSTimeInterval animationDuration=0.40f;
[UIView beginAnimations:@"ResizeForKeyboard" context:nil];
[UIView setAnimationDuration:animationDuration];
//假设当前View是父视图,则Y为20个像素高度,假设当前View为其它View的子视图,则动态调节Y的高度
float fX = self.view.frame.origin.x;
float fY = self.view.frame.origin.y + 130;
float width = self.view.frame.size.width;
float height = self.view.frame.size.height;
//下移130个单位。按实际情况设置
self.view.frame = CGRectMake(fX, fY, width, height);
[UIView commitAnimations];
}
}
// 移动窗体
-(void) moveView
{
NSLog(@"移动窗体之前self.view.origin.y :%f",self.view.origin.y);
//仅仅有当视图在初始位置的时候->
if (self.view.origin.y == 0) {
NSTimeInterval animationDuration=0.40f;
[UIView beginAnimations:@"ResizeForKeyboard" context:nil];
[UIView setAnimationDuration:animationDuration];
float fX = self.view.frame.origin.x;
float fY = self.view.frame.origin.y - 130;
float width = self.view.frame.size.width;
float height = self.view.frame.size.height;
//上移130个单位
self.view.frame = CGRectMake(fX, fY, width, height);
[UIView commitAnimations];
}
}