Objective-C - результаты UISearchController перекрываются с UISearchBar при прокрутке - PullRequest
0 голосов
/ 02 декабря 2018

Моя цель заключается в следующем: иметь UISearchBar, который всегда виден.Когда он не активен, в нижней части контроллера есть контент.Когда он становится активным, я хочу отобразить результаты поиска в UITableView, который перекрывает UIController.

Мой поиск настроен следующим образом: у меня есть фиксированный UIView в верхней части моего ViewController,созданный через раскадровку.В моем методе viewDidLoad я добавляю searchController.searchBar к этому UIView, чтобы UISearchBar был постоянно активен.Я использую очень полезную следующую строку, чтобы скрыть / отобразить searchResultsController: searchController.searchResultsController.view.hidden = FALSE;

Все это прекрасно работает, за исключением того, что когда я отображаю результаты, если я прокручиваю вниз, результаты отображаются в верхней части UISearchBar,enter image description here

Как этого избежать?Я полагаю, что это связано с тем, что я использую следующую строку:

[searchBarView addSubview:self.searchController.searchBar];

, где searchBarView - это пустое представление заполнителя, которое я создаю на своей раскадровке и придерживаюсь верхней части.Это единственный способ, которым я обнаружил, что панель поиска отображается постоянно.Важно отметить, что я не использую контроллер навигации и поэтому не добавляю searchController в качестве элемента навигации.

Большое спасибо за вашу помощь!

Ответы [ 3 ]

0 голосов
/ 21 декабря 2018

То, как вы используете UISearchController, совершенно неверно.В случае searchcontroller вы должны предоставить searchcontroller в качестве tableHeaderView табличного представления результата.Здесь вы добавляете searchcontroller в UIView и tableview в другом месте.Это, очевидно, не сработает.

Тем не менее, вы можете попробовать это возможными способами ---

  1. Сделать topView непрозрачным (не обеспечивать прозрачность для этого контейнера)
  2. Используйте UISearchbar вместо UISearchcontroller.

Таким образом, я думаю, что ваша проблема будет решена.

0 голосов
/ 21 декабря 2018

Я искал это в течение многих часов, и в итоге я поместил эту строку в viewDidLoad:

self.extendedLayoutIncludesOpaqueBars = YES;

Проблема решена:)

Надеюсь, она будет работать для вас.Спасибо.

0 голосов
/ 20 декабря 2018

Не использовать полупрозрачную панель навигации

self.navigationController.navigationBar.translucent = NO;
...