Панель поиска iOS добавлена ​​после небольшой задержки, не появляется в панели навигации - PullRequest
3 голосов
/ 31 мая 2019

Если я добавлю строку поиска после задержки в 0,1 секунды, то она не появится на панели навигации.Если я изменю задержку на 0,5 секунды, то она появится.Это потому, что когда задержка короткая, она запускается во время анимации нажатия?Как я могу заставить его появиться после 0,1 секундной задержки?

- (void)viewDidLoad
{
    [super viewDidLoad];
    double delayInSeconds = .1;
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
    dispatch_after(popTime, dispatch_get_main_queue(), ^{
        self.definesPresentationContext = YES;
        UISearchController *searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
        [self.navigationItem setSearchController:searchController];
        [self.navigationItem setHidesSearchBarWhenScrolling:NO];
    });
}

Ответы [ 2 ]

1 голос
/ 23 июля 2019

Я пытался сделать то же самое в моем проекте, и он просто не работает в viewDidLoad последовательно , даже если я укажу задержку в 0,5 секунды

В моеммнение, что делать это в viewDidLoad не очень хорошая идея (для этого контекста), так как представление VC, который вы нажимаете, в основном загружается до того, как анимация нажатия даже начинается, и задержка завершается до завершения анимации

Это работает нормально для меня в следующих случаях:

  • Когда предпочитается не анимировать толчок, например: navigationController?.pushViewController(yourVC, animated: false)
  • Когда я оживляю толчок и делаю всезадерживать вещи в viewDidAppear выдвинутых ВК (это, вероятно, то, что вам нужно сделать)

Назначение navigationItem searchController до завершения анимации нажатия является виновником, насколько яможно увидеть

0 голосов
/ 21 июля 2019

поместите ваш код в этот блок ... он задержится на 1 секунду и сообщите мне, если возникнет какая-либо проблема

DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.1, execute: {


        })
...