我有非常常用的导航控制器,我可以处理本地通知。当本地通知被触发时,新的viewController正在创建和显示。所以这是非常常见的情况,当我按标准行为推送和弹出(后退按钮)控制器时,突然在推送或弹出过程中,本地通知正在激活,新的viewControllers正在尝试出现并且都失败。结果 - 黑屏,没有响应的应用程序。如何检测和防止这种碰撞?或者我应该使用其他方法?
答案 0 :(得分:0)
首先,一些答案是here。但他们不适合我。所以我最终只使用阻止UI 1秒钟。它并不重要,但按预期工作。如果正在进行推(弹出)动画,则在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];
});