UISearchBar UISearchController смещается неправильно и переходит при прокрутке UITableView - PullRequest
0 голосов
/ 19 ноября 2018

В видео немного сложно увидеть, что происходит, поэтому я попытаюсь объяснить это.https://youtu.be/yOrCJB9yZlg

У меня есть UIViewController с UITableView внутри его корневого представления.Связывается через Autolayout (нет разницы, как это связано: с SuperView или с SafeArea).

SearchBar добавляется так: let search = UISearchController(searchResultsController: nil) self.navigationItem.searchController = search

Когда я медленно прокручиваю таблицу, происходит переход междубольшая навигационная панель и компактная навигационная панель, а затем анимация показа в поисковой панели и из нее слишком быстрая.Поисковая панель прыгает в / из навигационной панели вместо плавно открываемой / закрываемойПереход по навигационной панели - это переход между двумя состояниями, большим и компактным, без плавных проходов по среднему полуоткрытому состоянию при медленном перемещении пальца по экрану, как в системных приложениях (почта, телефон, сообщения, контакты и т. д.).

Я сделал пример из пустого проекта, чтобы продемонстрировать проблему;нет никаких изменений в логике навигационной панели или вообще никакой логики.Всего два новых ВК и это странное поведение.

Если я создам пример проекта xCode «Master-Details» и добавлю к нему UISearchController, он будет работать правильно.Я предполагаю, потому что они использовали UITableViewController вместо UIViewController + UITableView внутри.

В чем причина этого поведения и как это исправить?

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Это известная проблема, и ваш код выглядит нормально.Эта проблема уже обсуждалась здесь .

Проблема появляется, когда вы используете UIScrollView или его подклассы с большими заголовками навигации.Не работаетПроблема исчезает, когда вы используете UICollectionViewController или UITableViewController.

0 голосов
/ 19 ноября 2018

То, что вы сделали, правильно. Вы пытались запустить свой код на устройстве? По ощущениям больше похоже на глюк в симуляторе. Я попробовал то, что вы пытались, и у меня в устройстве работает нормально. В то время как сбой происходит в симуляторе.

См. Эту статью . Они объяснили пошаговый процесс.

...