系统键盘在ios7 ios8上不同效果

本文介绍了解决iOS应用中从一个界面返回另一个界面时,键盘收起与界面动画不同步的问题。通过使用延迟函数dispatch_after确保键盘正确收起,避免了键盘在返回界面时出现的下落现象。

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

今天写项目的时候遇到一个问题:从A界面推出B界面,B界面的textField编辑完成之后,向服务器发送编辑数据之后,成功之后弹出成功的系统提示框。代码如下:

//B界面的textfiled编辑完成点击okButton:

但这种情况在ios7 中没有出现,在ios8以上会出现:

- (void)OKButtonBeclick

{

    __weak VFeedbackViewController *weakSelf = self;

    [self.view endEditing:YES];

    self.button.enabled = NO;

    

    [[VFeedBackManager sharedManagerFeedBackWithcontent:self.feedbackTextView.text success:^{

        [UIAlertView showWithTitle:@"Thanks for your feedback"  message:nil cancelButtonTitle:nil  otherButtonTitles:@[@"OK"] tapBlock:^(UIAlertView *alertView, NSInteger buttonIndex) {

            if (buttonIndex == 0) {

                   [weakSelf.navigationController popViewControllerAnimated:YES];  

            }

        }];

    } failure:^(NSString *failing) {

        weakSelf.button.enabled = YES;

        NSLog(@"%@",failing);

    }];

}


直接这样写的话会遇到一个问题:就是界面先返回,然后键盘会在A界面出现下落的状况。因为AlertView 的 block不是在主线程里面,所以会会执行先执行

 [weakSelf.navigationController popViewControllerAnimated:YES];  然后执行 [self.view endEditing:YES];

解决方案是进行延迟:等[self.view endEditing:YES]执行完毕,再执行AlertView 的 block 中得 [weakSelf.navigationController popViewControllerAnimated:YES]; 

延迟一段时间,等主线完成,待执行线程的函数

合理的代码是:加dispatch_after的延迟函数

- (void)OKButtonBeclick

{

    __weak VFeedbackViewController *weakSelf = self;

    [self.view endEditing:YES];

    self.button.enabled = NO;

    

    [[VFeedBackManager sharedManagerFeedBackWithcontent:self.feedbackTextView.text success:^{

        [UIAlertView showWithTitle:@"Thanks for your feedback"  message:nil cancelButtonTitle:nil  otherButtonTitles:@[@"OK"] tapBlock:^(UIAlertView *alertView, NSInteger buttonIndex) {

            if (buttonIndex == 0) {

                dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

                   [weakSelf.navigationController popViewControllerAnimated:YES];  

                });

               

            }

        }];

    } failure:^(NSString *failing) {

        weakSelf.button.enabled = YES;

        NSLog(@"%@",failing);

    }];

}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值