Search code examples
objective-cuisearchbaruisearchcontrolleruisearchbardelegateuisearchresultscontroller

Resetting the search query string in UISearchController programmatically


I am failing to reset/substitute the search query string programmatically. I was trying to modify the UISearchBar query string from within the UISearchControllerDelegate.

I am using dictation input.

When the command "delete" is said, the searchController.searchBar.text should be set back to @"". The speech detection should continue as normal with the empty string.

The query string does get reset to @"", but the speech detection stops.

How can I reset search query string in UISearchController programmatically and still be able to continue the input using speech?

- (void)updateSearchResultsForSearchController:(nonnull UISearchController *)searchController {
    NSString *searchQuery = self.searchController.searchBar.text;

    // Deletion command
    if ([self.searchController.searchBar.text hasSuffix:@"delete"]) {

        // Things that I've tried that don't work
        //[self.searchController.searchBar setText:@""];
        //self.searchController = [self.searchController init];
        //self.searchController.searchBar.text = @"";

        searchQuery = @"";
    }
}

Solution

  • This feature is yet not available in iOS. As soon as you try to clear the text in searchBar's TextField, it change the keyboard mode to keypad input.

    So, the conclusion is, you can only provide the input to the textField using the dictation but can't clear it. User has to manually do the process to change again to Dictation Input.

    Hope it helps.