2017-05-21 5 views
1

Ich habe eine Suchleiste erstellt und bin mit dieser Funktion:Wie suchen textDidChange in SearchBar mit

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) { 

    getAlamoWithSearchText(withOffsetValue: 0) 
    print("Here it is: \(posts.count)") 
} 

Wie kann ich einen Timer implementieren, so dass es nur Änderungen, nachdem der Benutzer für 1 Sekunde die Eingabe gestoppt hat?

Antwort

3

Es gibt mehrere Möglichkeiten, dies zu implementieren. Eine davon ist das Hinzufügen eines Timers im Klassenbereich. Deaktivieren Sie dann den Zeitgeber in der TextDidChange-Delegatmethode. Unterhalb fügen Sie eine Anweisung hinzu, um den Methodenaufruf mit dem Parameter "repeat" als falsch zu planen.

Rufen Sie in der aufgerufenen Methode Ihre API auf, um die Elemente zu suchen.

+0

Könnten Sie tiefer gehen und vielleicht schreiben, wie das geht? –

+0

var timer = timer() im Klassenkörper außerhalb jeder Methode, bevorzugt über viewdidload() dann fügen Sie diese 2 Anweisungen in textdidchange() hinzu timer.invalidate() timer = Timer.scheduledTimer (timeInterval: 1, target: self, Selektor: #selector (callSearchApi), userInfo: null, repeats: false). –

+0

@JitendraTnwar, ich habe versucht, dies zu bearbeiten, indem ich deinen Kommentar in Code umwandelte, aber es war nicht einfach. Bitte - eine gute Antwort (was das zu sein scheint) sollte voll sein! Verwandle deinen Kommentar in Arbeitscode. Vielen Dank. – dfd

Verwandte Themen