UISearchBarController 常见问题

y> 页面出现键盘弹出

感谢//www.greatytc.com/p/742d34f064ee

  1. 签协议
    @interface NAFirstSearchDetailViewController ()< UISearchControllerDelegate>

  2. 在创建searchController的地方指定代理人

     _searchController.delegate = self;
    
  3. 在视图已经出现时设为激活状态, 不能在视图即将出现时

 #pragma mark 视图已经出现
- (void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];

    //第二步
    [_searchController setActive:YES];
}
  1. 实现代理方法, 动画一定要加
 #pragma mark UISearchControllerDelegate
 //第三步
 - (void)didPresentSearchController:(UISearchController *)searchController {
   [UIView animateWithDuration:0.1 animations:^{} completion:^(BOOL finished) {
       [_searchController.searchBar becomeFirstResponder];
    }];
   }
  1. 视图消失要把激活状态设置为NO, 才能回收键盘, 并确保下次进入页面键盘可以弹出, 一定要在即将消失的时候
#pragma mark - 视图即将消失
- (void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];

    //不取消激活下次再进来就不会弹出键盘
    [_searchController setActive:NO];
}

防止pop回来的时候闪一下

感谢 http://blog.csdn.net/x567851326/article/details/51788002

 [[[[_searchController.searchBar.subviews objectAtIndex:0] subviews] objectAtIndex:0] removeFromSuperview];
[_searchController.searchBar setBackgroundColor:[UIColor clearColor]];

不想让键盘弹出, 且在点击searchbar的时候跳转到新页面

  1. 签代理
@interface NAFirstPageViewController ()<UISearchBarDelegate>
  1. 指定代理人
  _searchController.searchBar.delegate = self;
  1. 实现代理方法
  #pragma mark - searchbarDelegate, 开始编辑时不弹出键盘, 并跳转页面
- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar{
    [self.navigationController pushViewController:self.searchVc animated:YES];
    return NO;
}

修改光标颜色和"取消"按钮颜色

//光标和取消按钮字体颜色
_searchController.searchBar.tintColor = kRGBColor(38, 164, 255);
//"取消"按钮颜色
[[UIBarButtonItem appearanceWhenContainedIn: [UISearchBar class], nil] setTintColor:[UIColor whiteColor]];
//取消按钮内容
[[UIBarButtonItem appearanceWhenContainedIn: [UISearchBar class], nil] setTitle:@"取消"];

要是上面方法被废弃了就用这个

[[[_searchController.searchBar.subviews objectAtIndex:0].subviews objectAtIndex:1] setTintColor:kRGBColor(0, 0, 240)];

修改"取消按钮"字体大小
感谢//www.greatytc.com/p/63218245ea76

_searchController.searchBar.showsCancelButton = YES;
_searchController.searchBar.delegate = self;

必须使用searchBarDelegate

#pragma mark - UISearchBarDelegate
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar{
    NSLog(@"start!");
    searchBar.showsCancelButton = YES;
    NSLog(@"%@",self.searchController.searchBar.subviews[0].subviews);
    for (UIView *view in     self.searchController.searchBar.subviews[0].subviews) {
    if ([view isKindOfClass:[UIButton class]]) {
            UIButton *cancelBtn = (UIButton *)view;
            [cancelBtn setTitle:@"取消" forState:UIControlStateNormal];
         [cancelBtn setTitleColor:APP_GLOBAL_BUTTON_COLOR forState:UIControlStateNormal];
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,686评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,261评论 4 61
  • 我想 大概是爱过 所以才学不会遗忘 像候鸟一样飞翔 像火车一样远方 像蒲公英一样流浪 我以为时间给予我的坚强 足以...
    商南萧阅读 237评论 0 0
  • 原创题图诗一首 《秋野荷韵》 秋池一帘风,天际白云生。 青钱尚且绿,未见芙蕖红。 仪态万方女,席地展为坪。 挚友陌...
    飘逸1阅读 303评论 0 5
  • 让我跌入地狱 再爬上天堂的阶级 让我置身于水火之中 让暴风雨来临 来将我埋葬 让我腐烂 直至另一个世界的到来 我的...
    LOVEWIHTTROYE阅读 293评论 0 0