iOS-监听键盘输入,视图整体上移或恢复-避免输入遮挡
Posted 极客学伟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS-监听键盘输入,视图整体上移或恢复-避免输入遮挡相关的知识,希望对你有一定的参考价值。
1.初始化输入框,监听输入框开始编辑和结束编辑
//密码输入框
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];
//监听密码输入框文字开始输入
[loginInputPasswordStr addTarget:self action:@selector(loginInputPasswordStrInputBegin) forControlEvents:UIControlEventEditingDidBegin];
//监听密码输入框文字结束输入
[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];
}
}
以上是关于iOS-监听键盘输入,视图整体上移或恢复-避免输入遮挡的主要内容,如果未能解决你的问题,请参考以下文章
[Cordova/Phonegap] Cordova iOS 应用在第三方输入法的键盘弹出(点击输入框)时,页面不上移,导致输入框被键盘遮挡 的解决办法