日常小记-已消失键盘自动显示和隐藏问题

昨天leader反馈过来一个很恶心的问题,App首次登陆,验证密码通过后,会提醒用户是否开启指纹解锁。当用户点击确定的时候,正确的做法是应该显示指纹解锁的页面,但是每次在这个时候,都会伴随着动画-自动弹出键盘并隐藏掉...然而这个界面并没有UITextField或者是UITextView。

反复测试,发现键盘貌似是上个界面,输入密码的时候传递过去的(因为推出下一个界面时键盘是什么样子大的,动画的时候的键盘就是什么样子的)。所以一开始我的思路是因为上个界面消失的时候没有取消第一响应。

但是事实证明并非如此。后来我想,可能是动作执行了,但是动画毕竟有时间 ,可能时间没走完,所以采用了dispatch_after,延迟2.5秒(系统键盘收起的时间)后再推出下一个界面。然而还是没有帮助。

问题的症结到底是什么呢?
事实上,之所以会自动弹出来键盘,是因为提醒用户开启指纹解锁的视图UIAlertView造成的。UIAlertView调用的时候,会暂时停止系统动画效果,结束后再重新寻找动画,这就出现了键盘出现再隐藏的效果。
解决的方法其实是也挺简单的。也是采用的延时思路。

//延时,确保动画执行完毕再显示alert
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.6 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
            //第一次登录,弹框提醒用户是否开启指纹密码。
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"是否启用指纹密码" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
            [self.view addSubview:alert];
            [alert show];
        });
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,241评论 4 61
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,776评论 25 709
  • 在传统课堂教学方式中,往往最受教师关注的是最好和最聪明的学生。他们在课堂上积极举手响应或提出很棒的问题。而与此同...
    sailor66阅读 3,180评论 0 1
  • #幸福是需要修出来的~每天进步1%~幸福实修12班04-陈莉梅-浙江永康# 20170929(4/60) 【幸福...
    陈莉梅阅读 1,547评论 0 2
  • 今天周四,因为昨天试验出了结果,早上照例晚起,匆匆来到实验室后等yeonyee商量试验结果。因为它和frank有m...
    最佳姐妹阅读 1,144评论 0 0