iOS键盘弹出的处理

#pragma mark -view自动调整位置

- (void)changeContentViewPosition:(NSNotification *)notification{

    UIWindow *window = [[[UIApplication sharedApplication]delegate]window];

    [window setBackgroundColor:[UIColor whiteColor]];

    NSDictionary *dict = [notification userInfo];

    NSValue *value = [dict objectForKey:UIKeyboardFrameEndUserInfoKey];

    CGFloat keyboardHeight = value.CGRectValue.size.height;

    NSNumber *duration = [dict objectForKey:UIKeyboardAnimationDurationUserInfoKey];

    NSNumber *curve = [dict objectForKey:UIKeyboardAnimationCurveUserInfoKey];

    if (self.nameText.isFirstResponder) {

    }else if(self.wayText.isFirstResponder){

         CGFloat  offsetTop = viewHeightCGRectGetMaxY(self.wayHolder.frame);

        if (offsetTop < keyboardHeight) {

            offsetTop = offsetTop - keyboardHeight;

            [UIView animateWithDuration:duration.floatValue animations:^{

                [UIView setAnimationBeginsFromCurrentState:YES];

                [UIView setAnimationCurve:curve.intValue];

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

            }];

        }

        

    }else if (self.integralText.isFirstResponder){

        CGFloat  offsetTop = viewHeightCGRectGetMaxY(self.integralHolder.frame);

        if (offsetTop < keyboardHeight) {

            offsetTop = offsetTop - keyboardHeight;

            [UIView animateWithDuration:duration.floatValue animations:^{

                [UIView setAnimationBeginsFromCurrentState:YES];

                [UIView setAnimationCurve:curve.intValue];

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

            }];

        }

        

    }else if (self.addressText.isFirstResponder){

        CGFloat  offsetTop = viewHeightCGRectGetMaxY(self.addressHolder.frame);

        if (offsetTop < keyboardHeight) {

            offsetTop = offsetTop - keyboardHeight;

            [UIView animateWithDuration:duration.floatValue animations:^{

                [UIView setAnimationBeginsFromCurrentState:YES];

                [UIView setAnimationCurve:curve.intValue];

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

            }];

        }

        

    }else if (self.declareTextView.isFirstResponder){

        CGFloat  offsetTop = -keyboardHeight+64;

        [UIView animateWithDuration:duration.floatValue animations:^{

            [UIView setAnimationBeginsFromCurrentState:YES];

            [UIView setAnimationCurve:curve.intValue];

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

        }];

    }

   }

#pragma mark -keyboardWillHide

- (void)resumeContentViewPosition:(NSNotification *)notification{

    NSDictionary *dict = [notification userInfo];

    NSNumber *duration = [dict objectForKey:UIKeyboardAnimationDurationUserInfoKey];

    NSNumber *curve = [dict objectForKey:UIKeyboardAnimationCurveUserInfoKey];

    [UIView animateWithDuration:duration.doubleValue animations:^{

        [UIView setAnimationCurve:curve.intValue];

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

    }];

}

我是这样实现的  点击不同的控件 都会根据控件的具体位置计算view需要上移的位置 但是过程中出现了一个BUG,就是每次view上移之前都会先出现一个黑色的方块,哟过户体验非常的不好,我目前是这个解决的,通过设置window的背景色为白色,就是跟你view一样的颜色即可,这样看起来感觉不出有什么BUG   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值