美文网首页
iOS UIAlertView消失后键盘重新弹出问题-最终结局方

iOS UIAlertView消失后键盘重新弹出问题-最终结局方

作者: iOS非常猿 | 来源:发表于2019-01-19 16:08 被阅读0次

    1.问题:pop 一个viewController时候键盘会发生闪现

    假如有两个ViewController A 和 B(使用了UINavigationController), 在B中的TextField操作结束后,使用UIAlertView提醒再返回到A界面,键盘会闪现出来,即使写了[_textField resignFirstResponder] 和 [self.view endEditing:YES]; 也还是会发生。

    验证方法:在A和B控制器中都去调用textField的代理,这个时候,可以看到A和B中的代理都调用了。

    解决方法:

    方法一:这个问题就是因为键盘收起是有动画的。而在键盘收起的动画开始的时候就pop了,键盘的动画没有执行完当然要在下一个vc里继续执行。所以要等键盘完全收起之后再pop或者push。直接dispatch_after个0.5秒左右再执行pop或者push。至于为什么用0.5秒,可能因为系统键盘收起的duration在0.5内会执行完毕.

    如果键盘是显示出来的,就延时0.5showAlert,如果键盘没显示,就直接showAlert

    if ([IQKeyboardManager sharedManager].keyboardShowing){//如果键盘是显示的,就要给0.5秒的动画时间键盘收起,否则回去一个页面会闪现键盘
                [weakSelf.viewendEditing:YES];
                //OC延时执行
                dispatch_time_tdelayTime =dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5/*延迟执行时间*/* NSEC_PER_SEC));
                dispatch_after(delayTime, dispatch_get_main_queue(), ^{
                    jxt_showAlertTwoButton(@"返回上一页,将丢失现在编辑的内容",nil,@"返回", ^(NSIntegerbuttonIndex) {
                        [weakSelf.navigationControllerpopViewControllerAnimated:YES];
                        return;
                    },@"继续编辑", ^(NSIntegerbuttonIndex) {
    
                    });
                });
            }
            else{
                jxt_showAlertTwoButton(@"返回上一页,将丢失现在编辑的内容",nil,@"返回", ^(NSIntegerbuttonIndex) {
                    [weakSelf.navigationControllerpopViewControllerAnimated:YES];
                    return;
                },@"继续编辑", ^(NSIntegerbuttonIndex) {
    
                });
            }
    
    

    相关文章

      网友评论

          本文标题:iOS UIAlertView消失后键盘重新弹出问题-最终结局方

          本文链接:https://www.haomeiwen.com/subject/lyrzdqtx.html