2016-07-25 23 views
0

私は非常に普通のナビゲーションコントローラを持っており、私はローカル通知を処理することができます。ローカル通知が発生すると、新しいviewControllerが作成され、表示されます。したがって、私は、標準的な動作でコントローラを押してポップ(戻るボタン)すると、突然プッシュまたはポッププロセスでローカル通知が発生し、新しいviewControllerが表示されようとしていて、両方が失敗します。その結果、黒い画面、応答のないアプリケーション。この衝突を検出して防止する方法は?別のアプローチを使用する必要がありますか?viewControllerの衝突を防ぐ方法は?

答えて

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]; 
    }); 
関連する問題