2017-02-27 4 views
1

Ich habe eine SearchBar und versuche, es so zu verhalten, wie Sie es in den iPhone-Einstellungen sehen würden. Wenn die Animation angetippt wird, wird die Lupe sanft von der Mitte der Suchleiste zur linken Seite der Suchleiste verschoben & bringt sanft die Abbrechen-Schaltfläche ein. Wenn ich jedoch auf "Abbrechen" klicke, friert die Animation ein und springt dann wieder in den Normalzustand zurück, wobei das Suchsymbol in der Mitte der Leiste und die Schaltfläche "Abbrechen" ausgeblendet sind (siehe GIF-Vorschau). Ist etwas in meinem Code, dass dies geschieht? Dies ist die Suchleiste Code:Jittery Suchleiste Abbrechen/Beenden Bearbeiten Animation

func searchBarTextDidEndEditing(_ searchBar: UISearchBar) { 
    searchBar.setShowsCancelButton(false, animated: true) 
} 

func searchBarCancelButtonClicked(_ searchBar: UISearchBar) { 
    self.view.endEditing(true) 
    searchBar.setShowsCancelButton(false, animated: true) 
} 

enter image description here

Antwort

1

Setzen Sie Ihre notwendigen Code in

public func searchBarShouldEndEditing(_ searchBar: UISearchBar) -> Bool 

nicht sicher, warum Sie es in shouldEnd tun müssen, um für den Knopf versteckt aber didBegin für die Ansicht

public func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) { 
    searchBar.setShowsCancelButton(true, animated: true) 
} 

public func searchBarShouldEndEditing(_ searchBar: UISearchBar) -> Bool { 
    searchBar.setShowsCancelButton(false, animated: true) 
    return true 
} 

func searchBarCancelButtonClicked(_ searchBar: UISearchBar) { 
    searchBar.resignFirstResponder() 
} 

enter image description here

+0

Danke Matthew. Ich frage mich auch, könnten Sie Ihren Code für searchBarCancelButtonClicked teilen? Das ist der, mit dem ich jetzt Probleme habe. Vielen Dank! – Trev14

+1

Ich nehme an, Sie möchten die Suchleiste "schließen". Das Feld zu verlassen, sollte funktionieren. Hat meinen Beitrag bearbeitet. –