2016-09-15 5 views
2

У меня возникла проблема, вызывающая серьезную головную боль.UISearchBar перемещается при манипулировании текстовым полем

В интерфейсе Builder у меня есть сцена, которая включает только табличное представление. Контроллер для этого подкласса UITableViewController. У меня есть другая сцена, которая имеет вид сверху с высотой 50, охватывающей ширину вида. Ниже показано представление контейнера, которое в конечном итоге содержит список или карту. Контроллер подклассифицирует UIViewController. Вот как это выглядит на тренажере ...

enter image description here

Обратите внимание, что список вы видите на картинке совершенно другой таблице и в контроллер. Контроллер панели поиска используется для поиска местоположений по городу или почтовому индексу. Вид таблицы для контроллера панели поиска накладывает другой список. Когда местоположение выбирается из таблицы поиска, регион для местоположения подается на другой контроллер, который использует частную веб-службу для извлечения списка интересующих объектов.

Я вызываю следующий метод, чтобы добавить поисковую панель к виду, упомянутому выше.

- (void)setupSearchView { 
    self.searchTableViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"LocationSearchTable"]; 
    self.searchController = [[UISearchController alloc] initWithSearchResultsController:self.searchTableViewController]; 
    self.searchController.searchResultsUpdater = self.searchTableViewController; 
    [self.searchController.searchBar sizeToFit]; 
    self.searchController.searchBar.tag = 9189; 
    self.searchController.searchBar.placeholder = @"Search by city or ZIP code"; 
    [self.searchView addSubview:self.searchController.searchBar]; 
    [[self.searchView viewWithTag:9189] becomeFirstResponder]; 
    self.searchController.hidesNavigationBarDuringPresentation = false; 
    self.searchController.dimsBackgroundDuringPresentation = true; 
    self.definesPresentationContext = true; 
} 

Когда я нажмите в текстовом поле, с self.definesPresentationContext значение ИСТИНА, панель поиска опускается вниз точную высоту панели навигации, оставляя большое белое пространство над ним.

definesPresentationContext = true

Если self.definesPresentationContext ложно, то поведение и результат различны. В этом случае, когда я нажимаю в поле поиска, все выглядит отлично. Но как только я начинаю , тип, контроллер навигации покрыт белым. Строка поиска не меняет позицию. Если я использую Reveal, я вижу, что панель навигации была отброшена назад в стек. Вот как это выглядит ...

self.definesPresentationContext = false

Что мне не хватает?

+0

Глядя на это ближе ... Фон стола всегда на 64 пикселя выше остальных слоев таблицы. –

+0

как вы это решили? –

ответ

1

У меня была такая же проблема, попробуйте использовать следующую строку кода в вашем представленииDidLoad viewing viewController.

self.extendedLayoutIncludesOpaqueBars = true