searchDisplayControllerWillEndSearch не изменяет размер панели поиска - PullRequest
0 голосов
/ 22 января 2012

Просто интересно, зачем и нужно это решать. У меня эта панель поиска выглядит следующим образом. enter image description here

, который щелкнул, переместится наверх и изменится до 0,0320, высота панели поиска.

enter image description here

, который нажал кнопку Отмена, он должен изменить размер до 33,55,270, высота панели поиска. но это не

enter image description here

searchDisplayControllerDidEndSearch будет работать, чтобы изменить размер назад, однако есть задержка в 1 секунду, что пользователь мог видеть изменения. Любое тело, почему в searchDisplayControllerWillEndSearch изменение размера анимации не будет работать?.

спасибо за комментарии и отзывы.

- (void) searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller
{

    [UIView animateWithDuration:.1
                     animations:^{ 

    controller.searchResultsTableView.frame = frogTableView.frame;
    searchDisplayController.searchResultsTableView.frame = frogTableView.frame;

    searchDisplayController.searchBar.frame = CGRectMake(32,
                                                         55,
                                                         270,
                                                         searchDisplayController.searchBar.frame.size.height);

    searchBar.frame = CGRectMake(32,
                                 55,
                                 270,
                                 searchBar.frame.size.height);
                         frogTableView.frame = CGRectMake(frogTableView.frame.origin.x, 
                                                          121, 
                                                          frogTableView.frame.size.width, 
                                                          frogTableView.frame.size.height);

                         notePad.frame = CGRectMake(notePad.frame.origin.x, 
                                                    45, 
                                                    notePad.frame.size.width, 
                                                    notePad.frame.size.height);

                         searchDisplayController.searchResultsTableView.frame = frogTableView.frame;
                      } 
                     completion:^(BOOL finished){
                         //whatever else you may need to do

                     }];
}

1 Ответ

2 голосов
/ 31 октября 2012

У меня возникла такая же проблема после того, как я начал использовать UISearchBar с UISearchDisplayController. Решение, которое я придумала, заключается в том, чтобы разместить панель поиска в представлении:

UIView * searchBarSubview = [[UIView alloc] initWithFrame:CGRectMake(0, 0, MENU_WORK_AREA_WIDTH, SEARCH_BAR_HEIGHT)] ;
searchBarSubview.autoresizesSubviews = YES;
searchBarSubview.backgroundColor = [UIColor clearColor];

UISearchBar * globalSearchBar = [[[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, MENU_WORK_AREA_WIDTH, SEARCH_BAR_HEIGHT)] autorelease];
globalSearchBar.tintColor = [UIColor blackColor];
globalSearchBar.delegate = self;
[globalSearchBar setBackgroundImage:[UIImage alloc]];

и измените размер представления вместо панели поиска в searchDisplayControllerWillEndSearch: (UISearchDisplayController *) контроллер:

[UIView beginAnimations:nil context:nil];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:0.3];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];

// Slide in to the final destination
searchBarSubview.frame = CGRectMake(0, 0, MENU_WORK_AREA_WIDTH, SEARCH_BAR_HEIGHT);

[UIView commitAnimations];
...