场景重现:现在有两个控制器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];
网友评论