自创解决键盘最后退出的问题

以modal控制器为例:
正常情况下,如果键盘在界面显示时候,就dismiss当前控制器,那么控制器的view会先退出,键盘会比控制器的view延迟退出。
解决办法:
dismiss控制器的view之前,先退出键盘,再dismiss控制器的view
 
    [self.view endEditing:YES];
    [self dismissViewControllerAnimated:YES completion:nil];
 
以上两行代码虽然解决了问题,但是会发现控制器的view被dismiss的时候,离开界面的动画执行比之前更快-闪退。为了解决控制器的view快速闪退的问题。
 
更好的办法:
// 先退出键盘,延迟0.2秒后 dismiss控制器
    [self.view endEditing:YES];
   
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
       
        [self dismissViewControllerAnimated:YES completion:nil];

    });
 
其他解决办法:
在以下方法中退出键盘:
- (void)viewWillDisappear:(BOOL)animated

posted @ 2015-09-11 19:40  oneSong  阅读(373)  评论(0编辑  收藏  举报