searchDisplayController WillEndSearch不调整搜索栏的大小

时间:2012-01-22 06:55:26

标签: iphone ios uikit uisearchbar uisearchdisplaycontroller

只是想知道为什么并需要解决它。我有这个搜索栏看起来像这样。 enter image description here

单击的

将向上移动到顶部并消耗到0,0,320,搜索栏的高度。

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 个答案:

答案 0 :(得分: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];