• iOS-监听键盘输入,视图总体上移或恢复-避免输入遮挡


    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是父视图,则Y20个像素高度,假设当前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];
        }
    }
  • 相关阅读:
    python安装mysqldb
    2月8日
    python反射机制
    python备忘
    Nginx+Tomcat动静分离及Nginx优化
    yum挂在iso文件yum源配置
    升级apache
    解决编译apache出现的问题:configure: error: APR not found . Please read the documentation
    学习网站总结
    面试题:登录页面测试
  • 原文地址:https://www.cnblogs.com/wgwyanfs/p/7388279.html
Copyright © 2020-2023  润新知