2016-09-15 3 views
2

Ich habe ein Problem, das große Kopfschmerzen verursacht.UISearchBar bewegt sich, wenn das Textfeld manipuliert

In Interface Builder habe ich eine Szene, die nur eine Tabellenansicht enthält. Der Controller für diese Unterklassen UITableViewController. Ich habe eine andere Szene, die oben eine Ansicht mit einer Höhe von 50 hat, die die Breite der Ansicht überspannt. Darunter befindet sich eine Containeransicht, die letztendlich eine Liste oder eine Karte enthält. Die Controller-Unterklassen UIViewController. Hier ist, wie es auf dem Simulator sieht ...

enter image description here

Beachten Sie, dass die Liste, die Sie im Bild oben sehen, ist eine ganz andere Tabelle und View-Controller. Der Suchleisten-Controller wird verwendet, um nach Orten nach Stadt oder Postleitzahl zu suchen. Die Tabellenansicht für den Suchleisten-Controller überlagert die andere Liste. Wenn ein Standort aus der Suchtabelle ausgewählt wird, wird der Bereich für den Standort dem anderen Controller zugeführt, der einen privaten Webdienst verwendet, um eine Liste von interessanten Punkten abzurufen.

Ich rufe die folgende Methode auf, um die Suchleiste zu der oben genannten Ansicht hinzuzufügen.

- (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; 
} 

Wenn ich im Textfeld klicken , mit self.definesPresentationContext auf true gesetzt, fällt die Suchleiste, die genaue Höhe der Navigationsleiste nach unten, darüber einen großen weißen Raum zu verlassen.

definesPresentationContext = true

Wenn self.definesPresentationContext falsch ist, dann ist das Verhalten und Ergebnis sind unterschiedlich. In diesem Fall, wenn ich in das Suchfeld klicke, sieht alles gut aus. Aber sobald ich beginne, Typ, der Navigationscontroller ist in weiß abgedeckt. Die Suchleiste ändert ihre Position nicht. Wenn ich Reveal verwende, kann ich sehen, dass die Navigationsleiste weit zurück in den Stapel geschoben wurde. Hier ist, wie das aussieht ...

self.definesPresentationContext = false

Was bin ich?

+0

Blick auf diese näher ... Der Tabellenhintergrund ist immer 64 Pixel höher als der Rest der Tabellenebenen. –

+0

wie hast du das gelöst? –

Antwort

1

Ich hatte das gleiche Problem versuchen Sie mit der folgenden Codezeile in Ihrem ViewDidLoad des präsentierenden ViewController.

self.extendedLayoutIncludesOpaqueBars = true