0
我有非常平常的導航控制器,我可以處理本地通知。當本地通知觸發時,新的viewController正在創建和顯示。所以這是非常常見的情況,當我在標準行爲中推送和彈出(後退按鈕)控制器時,突然在推送或彈出過程中,本地通知正在觸發,並且新的viewControllers試圖出現並且都失敗。結果 - 黑屏,沒有響應的應用程序。如何檢測和防止這種碰撞?還是應該使用另一種方法?如何防止viewControllers的碰撞?
我有非常平常的導航控制器,我可以處理本地通知。當本地通知觸發時,新的viewController正在創建和顯示。所以這是非常常見的情況,當我在標準行爲中推送和彈出(後退按鈕)控制器時,突然在推送或彈出過程中,本地通知正在觸發,並且新的viewControllers試圖出現並且都失敗。結果 - 黑屏,沒有響應的應用程序。如何檢測和防止這種碰撞?還是應該使用另一種方法?如何防止viewControllers的碰撞?
所以首先,一些答案是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];
});