2016-07-25 2 views
0

나는 매우 일반적인 내비게이션 컨트롤러가 있으며 로컬 알림을 처리 할 수 ​​있습니다. 로컬 알림이 실행되면 새 viewController가 만들고 표시됩니다. 따라서 매우 일반적인 상황입니다. 표준 동작으로 컨트롤러를 밀고 팝 (백 버튼) 할 때 갑자기 푸시 또는 팝 프로세스가 발생하면 로컬 알림이 실행되고 새로운 viewControllers가 표시되고 모두 실패합니다. 결과적으로 검은 화면이 나타나고 반응 형 앱이 없습니다. 이 충돌을 감지하고 방지하는 방법은 무엇입니까? 아니면 다른 접근법을 사용해야합니까?viewController 충돌을 방지하려면 어떻게해야하나요?

답변

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]; 
    }); 
관련 문제