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

2019-01-19  本文已影响0人  iOS非常猿

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) {

            });
        }

上一篇下一篇

猜你喜欢

热点阅读