iOS8 UIAlertView导致键盘闪退的问题

在iOS8之前,alert通常是用UIAlertView来实现的,但是在iOS8以后,如果当前的界面上有输入框(UITextView,UITextField)时,当点击UIAlertView进行跳转,特别是pop到上一个页面时,会出现在跳转以后键盘并没有收起来,而是闪一下再消失的问题。这是由于UIAlertView在弹出的时候会使当前界面失去焦点,同时会打断键盘收起的动画,所以出现了这样的情况。在iOS8的SDK中,苹果提倡使用UIAlertController来取代UIAlertView。

废话不说,直接上代码:

// '先来定义个判断当前版本的宏'
#define SYSTEM_VERSION   [[UIDevice currentDevice].systemVersion floatValue]

// '以下是如何实现UIAlertController的代码'
if (SYSTEM_VERSION >= 8.0) {
                    UIAlertController *alertCtrl = [UIAlertController alertControllerWithTitle:@"警告标题" message:@"警告内容" preferredStyle:UIAlertControllerStyleAlert];
                    UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
                        [self.navigationController popViewControllerAnimated:YES];
                    }];
                    [alertCtrl addAction:okAction大专栏  iOS8 UIAlertView导致键盘闪退的问题an class="p">];
                    // '这里可以添加多个action,每个action单独写需要进行的操作'
                    [self presentViewController:alertCtrl animated:YES completion:nil];

                }else{
                // '这个else一定要写,否则会导致在ios8以下的真机crash'
                    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"赎回成功" message:nil delegate:self cancelButtonTitle:nil otherButtonTitles:@"确定", nil];
                    alert.tag = 998;
                    [alert show];
                }

#pragma mark-UIAlertViewDelegate
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (alertView.tag == 998) {
        [self.navigationController popViewControllerAnimated:YES];
    }
}
知识兔div>

深呼吸,command + C/V,改一下内容,收工~

计算机