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

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

时间: 2024-10-14 04:34:01

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

bug日志(1):UIAlertView消失之后收起的键盘又弹出

iOS8之后,有了UIAlertController这个类,如下 NS_CLASS_AVAILABLE_IOS(8_0) @interface UIAlertController : UIViewController 很明显,苹果强烈建议广大码农们如果能不用UIAlertView就不要用啦,因为我们有UIAlertController了! 进入正题...... 为了兼容iOS7,我们的项目中就统一使用了UIAlertView.问题来了:(项目中的某一)界面中textField处于编辑状态(界面上

Android 另类方法监听软键盘的弹出收起事件

http://www.cnblogs.com/csonezp/p/5065624.html 最近做的项目碰到个问题,a界面是fragment+recyclerview,b界面带个edittext,并且会自动获得焦点弹出软键盘.由a界面进入b界面,再结束b界面返回a界面,就会在a界面上留下一片和软键盘大小相同的灰色区域,具体原因搞了很久也不清楚.但是问题总是要解决的,我在a的fragment上折腾了半天,始终没什么用.然后就想着在b界面折腾折腾,关闭activity的时候先收起挼键盘,软键盘收起完

iOS 8 模拟器键盘无法弹出

这是比较奇葩的问题,真机上键盘可以弹出,但模拟器上不行,这个我们测试程序带来了很多麻烦,后来找到了解决方法: 这样就正常了. 选了这个就直接连电脑上的键盘了.

关于ios8模拟器不能输入中文问题以及软键盘不弹出问题

在Xcode菜单栏中   Product->scheme->Edit Scheme->Options->Application Region改为中国,就可以输入中文了, 如果软键盘不弹出,则按shift+command+k,因为ios8外置键盘和软键盘只支持一个.

关于项目中很多键盘无故弹出或无隐藏的总结

1.activity的键盘问题 当布局中有EditText时,键盘有时会主动弹出影响界面效果,解决方式如下: 在清单文件-Manifest.xml中设定activity的属性 1.键盘的隐藏 android:windowSoftInputMode="stateHidden|stateUnchanged" "stateUnspecified"是指软键盘的状态(是否它是隐藏或可见)没有被指定. "stateHidden" 当用户选择该Activity

Android: View换切后,无法正常设置焦点或切换后TextView的虚拟键盘不弹出

边学.边测试,花了三天时间完工一个小应用. 遇到很多问题,但最终还是解决了. 我的手机是Android2.2版,所以我也在是2.2版环境下学习,开发. 1. 在同一个Activity中的不同View(layout)中切换界面时,经常发生TextView无法正常取得焦点. 或者更严重的情况是,有了焦点,但点击后,虚拟键盘不弹出,根本就无法正常输入数据. 我昨天晚上为了解决这个焦点和虚拟键盘不弹出的问题,花了三个小时. 最终的解决方法: 当由view1 切换到 view2 时: setContent

判断软键盘的弹出

未弹出软键盘时的布局,很简单,只有一个webview加一个底部bar,底部bar由一个linearlayout包含四个button组成. 当布局中有webview时,点击webview上的输入框,会有软键盘弹出以输入文字. 问题:此时,如果布局含有底部bar,底部bar会被软键盘托起.如下图所示: 解决方式: 使用  RelativeLayout.getViewTreeObserver().addOnGlobalLayoutListener(listener);监听软键盘是否弹出,在弹出时隐藏底

iOS:iOS8模拟器下键盘不能弹出

从iOS7模拟器换到iOS 8模拟器后,键盘却无法弹出,我的模拟器版本是iOS 8.2 解决方法:打开iOS8模拟器,选择Hardware菜单,选中Keyboard,将其中的第二项Connect Hardware Keyboard 选中状态去掉 在此说明:苹果公司在iOS8后,在模拟器中,当判断你使用键盘输入后,就禁止使用了模拟器的软键盘,所以需要设置一下,却变成了无法使用键盘,只能使用模拟器软键盘的情况,也就是说没有了兼容性. (费解,既然是模拟器开发,肯定要要测试键盘正常的弹出消失啊)

Android WebView 输入框键盘不弹出

问题 在Android中使用内嵌的WebView加载HTML网页时,如果html页面中存在输入框.那么在有些手机设备中,当输入框获取焦点时,系统输入法键盘无法正确弹出,从而无法完成正常的输入要求 在做APP时,自己也遇到了这个问题,以下是自己解决的方法,有可能不适合大家所遇到的情况,但值得借鉴~ WebView设置问题 有些时候我们设计的html页面并不能够很好的适应WebView,尤其我们的html页面是为PC浏览器设计的时候,当使用WebView来加载时,界面很可能会发生错乱,当input输