2016-09-15 14 views
2

我遇到了一個導致嚴重頭痛的問題。UISearchBar在處理文本字段時移動

在Interface Builder中,我有一個只包含tableview的場景。這個子類的控制器UITableViewController。我還有另一個場景,它的頂部有一個高度爲50的視圖,跨越視圖的寬度。下面是一個容器視圖,最終包含一個列表或一張地圖。控制器的子類爲UIViewController。下面是它看起來像在模擬器上...

enter image description here

請注意,您在上面的圖片中看到的列表是一個完全不同的表和視圖控制器。搜索欄控制器用於按城市或郵編搜索位置。搜索欄控制器的表格視圖覆蓋另一個列表。當從搜索表格中選擇一個位置時,該位置的區域被饋送到另一個控制器,該控制器使用專用Web服務來檢索興趣點列表。

我正在調用以下方法將搜索欄添加到上述視圖。

- (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設置爲true,搜索欄下拉導航欄的確切高度,離開它上面的一個大空白。

definesPresentationContext = true

如果self.definesPresentationContext是假的,那麼,行爲和結果是不同的。在這種情況下,當我點擊搜索字段時,一切都很正常。但只要我開始型號,導航控制器覆蓋白色。搜索欄不會更改位置。如果我使用Reveal,我可以看到導航欄已經推回棧中。這裏是什麼樣子......

self.definesPresentationContext = false

我缺少什麼?

+0

看着這個更近......表格背景總是比其他表格圖層高出64個像素。 –

+0

你是如何解決這個問題的? –

回答

1

我有同樣的問題嘗試使用viewDidLoad呈現viewController中的以下代碼行。

self.extendedLayoutIncludesOpaqueBars = true