码迷,mamicode.com
首页 > 其他好文 > 详细

bug报告:UIAlertView消失之后收起的键盘又弹出

时间:2016-04-27 22:17:07      阅读:753      评论:0      收藏:0      [点我收藏+]

标签:

iOS8之后,有了UIAlertController这个类,如下

NS_CLASS_AVAILABLE_IOS(8_0) @interface UIAlertController : UIViewController

很明显,苹果强烈建议广大码农们如果能不用UIAlertView就不要用啦,因为我们有UIAlertController了!

进入正题。。。

为了兼容iOS7,我们的项目中就统一使用了UIAlertView。问题来了:(项目中的某一)界面中textField处于编辑状态(界面上有键盘),点击界面中一个执行确定操作的按钮时,我先将键盘收起,键盘收起的执行代码是这样的

[self.view endEditing:YES];

随即又执行了弹出一个UIAlertView的代码,点击UIAlertView上的确定按钮之后其被dismiss掉了。这时,键盘又神奇般的弹了出来!!!

看了一下真机系统版本号:9.2.1。随后又用另外一个真机(系统版本8.1.2)进行测试时,这个问题却没有出现。

于是百度了一下,经验证,以下代码可以解决我遇到的这个问题

if (IOS_SystemVersion >= 8.0)  {
        UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"title" message:@"message" preferredStyle:UIAlertControllerStyleAlert];
        UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
            
        }];
        
        [alertController addAction:okAction];
        [self presentViewController:alertController animated:YES completion:nil];
    }
    else  {
        
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"title" message:@"message" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"确定", nil];
        [alert show];
    }

 有网友是这样说的: 在iOS 8.3以后,dismiss alert view时系统会尝试恢复之前的keyboard input。

这应该是iOS系统高版本在处理UIAlertView时一个不完美的地方。不过,好在问题能够解决!

参考:http://www.cnblogs.com/android-wuwei/p/4685960.html

        http://blog.csdn.net/ul123dr/article/details/50385929

        http://www.cocoachina.com/bbs/read.php?tid=307336&page=e&#a

bug报告:UIAlertView消失之后收起的键盘又弹出

标签:

原文地址:http://www.cnblogs.com/zhangguangkai/p/5440288.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!