Черная область с interactivePopGestureRecognizer при подключении контроллера представления с видимой панелью навигации к контроллеру со скрытой панелью навигации

У меня есть этот ViewController #1, который является корневым контроллером представления контроллера навигации и имеет

self.navigationController.navigationBarHidden = YES;

ViewController #1 сообщает своему навигационному контроллеру нажать ViewController #2, который имеет

self.navigationController.navigationBarHidden = NO;

Когда я хочу вернуться от ViewController # 2 к ViewController #1, проведя пальцем с левой стороны экрана, я вижу свои виды как скриншот, который я прикрепил здесь. Это фиксируется, когда я двигаю пальцем вправо, так что, продолжая смахивать вправо, черная область в верхнем правом углу становится все меньше и меньше, пока ViewController #1 не покрывает всю область экрана.

Я предполагаю, что это вызвано скрытой / видимой разницей в навигационной панели между двумя контроллерами представления.

Я хотел бы узнать, возможно ли избавиться от этой черной области.

2 ответа

Решение

Как обсуждалось с HoanNguyen, я поместил свой код, чтобы скрыть / показать панель навигации на viewWillAppear/Disappear, но в конце концов я понял, что хитрость заключается в том, чтобы установить анимированные значения. Странно, но это решило мою проблему и черная область теперь исчезла:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:self.shouldHideNavBar animated:animated];
}

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [self.navigationController setNavigationBarHidden:!self.shouldHideNavBar animated:animated];
}

Вы должны поместить свой кодовый набор скрытой / показанной навигации в viewWillAppear или viewDidAppear.

Другие вопросы по тегам