2012-01-22 1 views
0

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

, который щелкнул, будет двигаться вверх и расходуется до 0,0,320, высота поисковой строки.

enter image description here

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

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 

        }]; 
} 
+0

Оооо, почему блоки? Это обычно должно использоваться только для таких вещей, как GCD или более сложная сеть. Вы переусердствовали: P –

+0

, так что я должен делать Galaxas0? – Desmond

+1

Возможный обман - http://stackoverflow.com/questions/556814/changing-the-size-of-the-uisearchbar-textfield – rishi

ответ

2

Я была такая же проблема после того, как я начал использовать 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];