3

I have a UISearchBar in iOS 6 app and it works perfectly, but in iOS 7 the cancel button and the clear button don't work and I can't return back. It's a big problem in my app and I need to solve it.

My code is:

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString

{
    // -- iOS 7 Hack

    if (!SYSTEM_VERSION_LESS_THAN(@"7.0")) {
        controller.searchResultsTableView.frame = CGRectMake(0, 64, self.view.frame.size.width, self.view.frame.size.height-64);
        [controller.searchContentsController.view setNeedsLayout];
    }

    [self filterContentForSearchText:searchString scope:nil];
    return YES;


}

- (void) searchDisplayController:(UISearchDisplayController *)controller didShowSearchResultsTableView:(UITableView *)tableView {
    // iOS7 Hack
    if (!SYSTEM_VERSION_LESS_THAN(@"7.0")) {
        controller.searchResultsTableView.contentInset = UIEdgeInsetsMake(0.f, 0.f, 0.f, 0.f);
    }

}

Thank you for advance.

Possbile duplicate: UISearchBar's Cancel and Clear Buttons Not Working in iOS 7

EDIT:

- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
{
    self.searchDisplayController.searchBar.hidden = YES;
    self.tempImageView.hidden = NO;
    [searchBar resignFirstResponder];
}

SOLUTION:

With this function I resolved the problem:

-(void)searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controller
{
    controller.active = YES;

    [self.view addSubview:controller.searchBar];
    [self.view bringSubviewToFront:controller.searchBar];
}

Hope it helps!

Community
  • 1
  • 1
amurcia
  • 801
  • 10
  • 26

2 Answers2

0

IOS 7 default search bar will be transparent cancel button

- (void)searchBarCancelButtonClicked:(UISearchBar *)aSearchBar
{
    [aSearchBar resignFirstResponder];
    isSearching = NO;
    aSearchBar.text = @"";

    [diaryTableView reloadData];

}
Arun Kumar
  • 154
  • 10
0

With this function I resolved the problem:

-(void)searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controller
{
    controller.active = YES;

    [self.view addSubview:controller.searchBar];
    [self.view bringSubviewToFront:controller.searchBar];
}

Hope it helps!

amurcia
  • 801
  • 10
  • 26