7

我正在尝试显示一个搜索栏,该搜索栏的行为与本机地图应用程序中的搜索栏完全相同。我是说:

  • 我的导航栏标题视图中的搜索栏
  • 选中后,搜索栏占据导航栏的整个宽度,并显示 SearchDisplayController

到目前为止,我设法得到以下行为:

在此处输入图像描述

正如您在上面看到的,我无法让搜索栏在选择时占据整个宽度。不过,全宽 + 取消按钮似乎是与 SearchDisplayController 挂钩的搜索栏的默认行为,至少在搜索栏未添加到导航栏的情况下是这样!

我是否错过了一种明显的方法?searchBarShouldBeginEditing还是调用时必须自己自定义导航栏?

4

2 回答 2

0

只要我没有完美的解决方案,我就会做以下事情。但我仍然对更好的东西持开放态度!!

- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar {
    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(onCancel)];
    [UIView animateWithDuration:0.1 animations:^(){
        self.navigationItem.leftBarButtonItem = nil;
    }];
return YES;
}

- (void)onCancel {
    [self.searchController setActive:NO];
}

- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar {
    [UIView animateWithDuration:0.1 animations:^(){
        self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"OpenMenuButton.png"] style:UIBarButtonItemStylePlain target:self action:@selector(openSideMenu:)];
    }];
    self.navigationItem.rightBarButtonItem =self.doneButton;
    return YES;
}

此外,我想知道 Maps 应用程序是否真的使用导航控制器,因为有一些自定义行为(titleView 的宽度、leftBarButton 的动画超出屏幕)让我感到惊讶。

于 2013-11-04T19:22:14.820 回答
0

您在寻找类似UISearchDisplayController+的东西UISearchBar吗? http://petersteinberger.com/blog/2013/fixing-uisearchdisplaycontroller-on-ios-7/

于 2013-11-05T15:02:33.807 回答