Beppex
Beppex

Reputation: 133

How to detect tap on cancel button with searchable modifier

I use the SwiftUI searchable of iOS15 modifier to make a search with the onSubmit modifier to send a HTTP request, and I also would like to reset the initial list when the user tap on Cancel button; I would appreciated if I had found an onCancel modifier. Is anyone that soled this?

Upvotes: 7

Views: 2093

Answers (1)

Ravi
Ravi

Reputation: 381

We have two environment values coming with .searchable, which are isSearching, and dismissSearch.

@Environment(\.isSearching) private var isSearching: Bool
@Environment(\.dismissSearch) private var dismissSearch

If we have our searchable code like the below

.searchable(text: self.$searchText)

Then we can detect the search being cancelled like the below snippet.

.onSubmit(of: .search) {
    //Search triggered on tap of search button in keyboard
}
.onChange(of: searchText) { value in
    if searchText.isEmpty && !isSearching {
        //Search cancelled here
    }
}

Try using this approach meanwhile apple hopefully comes up with some .onCancel(.search) modifier for us in the upcoming releases.

Upvotes: 10

Related Questions