5

Ich arbeite an einem iOS-Projekt, wo ich eine Suchfunktionalität implementieren möchte. Ich benutze UISearchBar und UISearchDisplayController und ich möchte UISearchBar implizit versteckt machen. Wenn der Benutzer auf UIBarButtonItem tippt, wird die Suchleiste angezeigt und "BecomeFirstResponder", während wenn Benutzer auf die Cancel Schaltfläche in der Suchleiste klickt, sollte es verschwinden.Wie erkenne ich das Antippen auf dem grauen (abgedunkelten) Hintergrund in UISearchDisplayController

Das Erscheinen funktioniert korrekt, aber ich habe ein Problem mit dem Verschwinden. Ich habe es geschafft, die Suchleiste zu verbergen, wenn der Benutzer auf die Schaltfläche Cancel (searchBarCancelButtonClicked) tippt, aber ich kann die Suchleiste nicht ausblenden, wenn der graue (abgeblendete) Hintergrund in UISearchDisplayController angetippt wird. Soweit ich weiß, gibt es keine Methode, um dieses Ereignis zu erkennen, also ist es notwendig, etwas Hack zu verwenden. Kennst du irgendeinen oder was ist der beste Weg, das Tippen auf dem grauen Hintergrund zu erkennen?

Antwort

5

Also habe ich es endlich ausgearbeitet. Abgesehen von der searchBarCancelButtonClicked:(UISearchBar *)searchBar ist es auch notwendig, die Suchleiste in searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller zu verstecken. Es sieht so aus, dass dieser Callback auch dann aufgerufen wird, wenn der graue (abgeblendete) Hintergrund angetippt wird, so dass er leicht zum Ausblenden der Suchleiste verwendet werden kann.

+0

Sie sind ein Genie! – pechar

0

UISearchDisplayController besteht normalerweise aus einem UISegmentedControl, der UIResultsTable und der Tastatur. In der Ergebnistabelle möchten Sie diese Berührungsmöglichkeit erkennen, um sie zu schließen. Wenn das bekannt ist, können Sie der Ansicht möglicherweise ein transparentes UIButton hinzufügen, das den Erstbeantworter entlässt, oder vielleicht können Sie einen UIGestureRecognizer für eine transparente Ansicht hinzufügen, die den gleichen Effekt erzielt? Ich denke nur an die Spitze und habe das nicht selbst ausprobiert, wenn es für dich klappt, bin ich froh!

+0

Ich denke, UIResultsTable ist nicht das, wonach ich suche. Die Ergebnistabelle wird erst nach Eingabe in die Suchleiste angezeigt. Davor gibt es kein UITableView, nur einen grauen Hintergrund. – zvonicek

Verwandte Themen