那些年走过的坑-自定义键盘弹出之后会自动收回

一,自定义键盘弹出之后会自动收回

项目准备封版了,测试突然反馈一个偶现bug,在程序进入支付界面,输入密码时,连续进入再退出,多次执行几次这个操作,会出现键盘弹出之后又自动收回去的现象,自己去测试也发现这个问题确实是存在的,需要手动点击textfiled才能重新调起支付键盘;

分析步骤:1.既然键盘有弹出,说明被调用为第一响应,之后收起,失去第一响应,猜测可能键盘响应的时机不对,等空间完全创建完毕之后再调用第一响应,放在viewdidAppear里面执行,bug依然存在; 又怀疑是上一次退出时,键盘没有调用regis方法,因此又在dealloc中主动调用regis方法,多次测试之后,偶尔还是会出现键盘回收的情况;谷歌收索,很遗憾没有收索到答案,后来问一个以前的同事,经过一番交流,一个全新的解决方案出来了;

1.同事提出的方法:  由于我那个支付控件是pop出来的,因此要等键盘完全收起之后再pop或者push。直接dispatch_after个0.25秒再执行pop或者push。因为系统键盘收起的duration就是0.25秒。

2.另外一个可行的方法: 我在pop操作时,不希望看到动画效果,因此animation设置的为NO,改用YES也可以消除这个bug; 如果项目要求不严,可以采用这个方法

你可能感兴趣的:(那些年走过的坑-自定义键盘弹出之后会自动收回)