2016-07-25 40 views
0

我有非常平常的导航控制器,我可以处理本地通知。当本地通知触发时,新的viewController正在创建和显示。所以这是非常常见的情况,当我在标准行为中推送和弹出(后退按钮)控制器时,突然在推送或弹出过程中,本地通知正在触发,并且新的viewControllers试图出现并且都失败。结果 - 黑屏,没有响应的应用程序。如何检测和防止这种碰撞?还是应该使用另一种方法?如何防止viewControllers的碰撞?

回答

0

所以首先,一些答案是here。但他们不适合我。所以我最终只用了1秒的UI。这并不重要,但按预期工作。如果推动(流行)动画正在进行,则1秒后将完成:

[[UIApplication sharedApplication] beginIgnoringInteractionEvents]; 
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
     if ([lastStackVC.navigationController respondsToSelector:@selector(showViewController:sender:)]) { 
      [lastStackVC.navigationController showViewController:vc sender:nil]; 
     } else { 
      [lastStackVC.navigationController pushViewController:vc animated:YES]; 
     } 
     [[UIApplication sharedApplication] endIgnoringInteractionEvents]; 
    });