UISearchBarを使ってインクリメンタルサーチを実装している時の備忘録です。
検索文字を入力すると、SearchBar内にクリアボタンが表示されます。
そのクリアボタンを押すと、入力テキストが削除されますが、
その時、検索結果を操作したいですよね。
しかし、検索した限りでは、UITextFieldでいうのtextFieldShouldClear(_ textField: UITextField) -> Bool
のようなメソッドが見当たりませんでした。見逃しているだけだったら、すみません。
そこで、UISearchBarDelegateのsearchBar(_ searchBar: UISearchBar, textDidChange searchText: String)
を使用することにしました。
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
if searchText.isEmpty {
results.removeAll()
}
}
やっていることは極簡単です。
検索テキストが変更された時、検索文字列が空であれば、という条件を設ければOKです。
こうすることで、クリアボタンを押した際にif searchText.isEmpty
の中身が実行されます。
参考:https://stackoverflow.com/questions/29135594/uisearchbar-x-button-pressed