使用系统alert后键盘闪出又消失的解决办法

2016-06-15  本文已影响344人  拥抱月亮的大星星

场景重现:现在有两个控制器VCA 和VCB ,简称A ,B,比如我们是从A push到B的,然后我们在B里面执行操作,点击B中的方法,弹出个系统alert,点击系统alert,pop回A,如果我们点击alert的时候,正好键盘也在,文字正处在输入状态,这时候当我们回到A,会发现有个键盘弹出来,然后又弹下去。

1.原因可能

alertview pop
alert关闭影响了键盘动画 pop操作影响了键盘动画

然后我发现在没有pop情况下,alert关闭依旧会出现这个问题,所以我认为应该是alert关闭影响了键盘动画,不知道怎么验证,只是猜测

2.解决办法

你可以这样
#pragma mark - UIAlertDelegate Method
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    
    if(alertView.tag == 1000)
    {
        //防止pop后闪出键盘
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
            self.hidesBottomBarWhenPushed = NO;
            [self.navigationController popViewControllerAnimated:YES];
        });
        
        
    }
}
假如你用的是textField你还可以可以这样
1.设置代理
textField.delegate = self;

然后在点击事件添加
[[alertView textFieldAtIndex:buttonIndex]resignFirstResponder];

参考链接

pop 一个viewController时候会有键盘闪现出来又消失, 请教原因和解决方法?

上一篇下一篇

猜你喜欢

热点阅读