Search code examples
iosobjective-cios7uisearchbaruitoolbar

UISearchBar inside UIPopoverController moving on click


I'm currently trying to place a table view and search bar inside a popover but I'm getting a really weird bug. Whenever I click on the search bar, the cancel button animates in and the bar promptly lowers about the size of a status bar.

Normal State

When Selected

I've tried playing around with the UIBarPosition delegate, but that doesn't do anything either. I've tried just about everything I can think of so I thought I'd ask your help. Here's the code I use in the UITableViewController to add the search bar to the table header:

- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];

if (self)
{

    searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, popoverWidth, singleRowHeight)];
    searchBar.delegate = self;
    searchBar.showsScopeBar= YES;

    searchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar:searchBar contentsController:self];
    searchDisplayController.delegate = self;
    searchDisplayController.searchResultsDataSource = self;
    searchDisplayController.searchResultsDelegate = self;
    searchDisplayController.searchResultsTableView.rowHeight = singleRowHeight;
    self.automaticallyAdjustsScrollViewInsets = NO;

    self.tableView.tableHeaderView = searchBar;

    return self;
}

- (UIBarPosition)positionForBar:(id<UIBarPositioning>)bar
{
    return UIBarPositionTop;
}

Thanks!


Solution

  • according to Extra space above search bar when UISearchDisplayController is active

    - (void)viewDidLoad {
       [super viewDidLoad];
    
        if ([self respondsToSelector:@selector(edgesForExtendedLayout:)]) { /// iOS 7 or above
            self.edgesForExtendedLayout = UIRectEdgeNone;
        }
    }