键盘遮挡

本文介绍了一个iOS应用中实现键盘弹出时TextField自动上移的方法。通过监听TextField的状态变化,在开始编辑时调整视图的位置以确保TextField始终可见,并在结束编辑时将视图恢复到初始位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#pragma mark - 键盘弹出 textFiled自动上移

- (void)textFieldDidBeginEditing:(UITextField *)textField

{

    [self animateTextField: textField up: YES];

    [self btnSelect];

}

- (void)textFieldDidEndEditing:(UITextField *)textField

{

    //编辑完成回到初始位置  CGRect rect = CGRectMake(x,64,width,height);   看情况修改

    [UIView beginAnimations:@"anim" context: nil];

    [UIView setAnimationBeginsFromCurrentState: YES];

    float width = self.view.frame.size.width;

    float height = self.view.frame.size.height;

    float x = self.view.frame.origin.x;

    CGRect rect = CGRectMake(x,64,width,height);

    self.view.frame = rect;

    [UIView commitAnimations];

    [self btnSelect];

}

- (void)animateTextField: (UITextField*) textField up: (BOOL) up

{

    //计算当前控件在屏幕上的位置

    // SCREENHEIGHT = CGRectGetHeight([UIScreen mainScreen].bounds)

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

    CGRect rect = [textField convertRect:textField.bounds toView:window];

    NSLog(@"++%f -- %f   %f",rect.origin.y,rect.size.height,SCREENHEIGHT);

    if(SCREENHEIGHT - (rect.origin.y + 30) < 216){ //键盘高216   30控件的高度

        const int movementDistance = 216 - (SCREENHEIGHT  - (rect.origin.y + 30)); // tweak as needed

        [UIView beginAnimations: @"anim" context: nil];

        [UIView setAnimationBeginsFromCurrentState: YES];

        float width = self.view.frame.size.width;

        float height = self.view.frame.size.height;

        float x = self.view.frame.origin.x;

        float y = self.view.frame.origin.y;

        CGRect rect = CGRectMake(x,y - movementDistance,width,height);

        self.view.frame = rect;

        [UIView commitAnimations];

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值