Приложение зависает при нажатии на контроллер просмотра - PullRequest
0 голосов
/ 30 мая 2018

Недавно я застрял в ошибке нажатия UIViewController на UINavigationViewController, и я нашел решение для этого.

Сценарий ошибки:

это не 'Не имеет значения, как вы нажимаете UIViewController (по ходу дела, используя pushViewController, ..).В RootViewController вашего NavigationViewController попробуйте использовать жест смахивания назад!(ничего не должно происходить), затем попытайтесь вставить ViewController в ваш NavigationViewController, коснувшись элемента.=> Приложение зависает!Здесь, если вы захватите экран с помощью XCode, вы увидите, что текущий видимый экран - это следующий экран !!(но это не так!), использование процессора и любые другие вещи являются нормальными. Вы можете выйти из «Замораживания приложения», просто взмахом пальца!

Вот решение:

В вашем BaseNavigationViewController (который расширяет UINavigationViewController) вставьте эти коды(особенно когда вы используете UITabbarNavigationViewController)

- (void)navigationController:(UINavigationController *)navigationController
   didShowViewController:(UIViewController *)viewController
                animated:(BOOL)animate {
    if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
      if (self.viewControllers.count > 1) {
        self.interactivePopGestureRecognizer.delegate = self;
        self.interactivePopGestureRecognizer.enabled = YES;
      } else {
        self.interactivePopGestureRecognizer.delegate = nil;
        self.interactivePopGestureRecognizer.enabled = NO;
      }
    }
}
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
   if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
      return self.viewControllers.count > 1;
   }
   return NO;
}

Не забудьте также написать эти коды:

в viewDidLoad BaseNavigationViewController:

self.delegate = self;

и ваш BaseNavigationViewController должен использовать эти два протокола: UINavigationControllerDelegate, UIGestureRecognizerDelegate

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...