Как реплицировать поведение прокрутки UISearchBar в Notes.app? - PullRequest
7 голосов
/ 29 июля 2010

Когда вы прокручиваете tableView вниз ( Notes.app ), панель поиска остается зафиксированной сверху, но когда вы прокручиваете tableView вверх, панель поиска скрывается. Это то, что я хочу.

Глядя на индикатор прокрутки, кажется, что UISearchBar является подпредставлением представления прокрутки таблицы. Но если я добавлю панель поиска в tableView в Интерфейсном Разработчике, то она всегда будет прокручиваться, прикрепленная к tableView, как обычная строка.

Ответы [ 3 ]

4 голосов
/ 13 февраля 2011

В табличном представлении поместите пустой прозрачный UIView (searchBarPlaceholderView) в слот tableHeaderView, который точно соответствует размерам UISearchBar.Затем добавьте UISearchBar (searchBar) в представление верхнего уровня.

Затем в делегате вашего табличного представления добавьте

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    CGRect sbFrame = searchBar.frame;
    sbFrame.origin.y = searchBarPlaceholderView.frame.origin.y - scrollView.contentOffset.y;

    // it cannot move from the top of the screen
    if (sbFrame.origin.y > 0) {
        sbFrame.origin.y = 0;
    }

    searchBar.frame = sbFrame;
}
1 голос
/ 15 февраля 2012

Добавьте панель поиска в табличное представление в конструкторе интерфейсов, как обычно (то есть панель поиска должна быть подпредставлением таблицы).

Затем реализуйте этот метод в делегате:

-(void)scrollViewDidScroll:(UIScrollView *)scrollView {
    UISearchBar *searchBar = self.searchDisplayController.searchBar;
    if(scrollView.contentOffset.y <= 0) {
        searchBar.frame = CGRectMake(0, scrollView.contentOffset.y, searchBar.frame.size.width, searchBar.frame.size.height);
    }
}
1 голос
/ 21 января 2011

Это поведение по умолчанию.Вам просто нужно сбросить панель в первом заголовке таблицы (я думаю, это раздел 0).

Однако я только что создал новое приложение с UITableViewController и через Interface Builder я удалил UISearchBarв верхней части tableView, и он ведет себя так же, как приложение Notes.app.

...