UISearchBar

  • UISearchBarDelegate 代理方法

#pragma mark - searchBar 开始编辑
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar{
    NSLog(@"开始编辑");
    // 01 隐藏导航栏
    [self.navigationController setNavigationBarHidden:true animated:true];
    // 02 重新设置searchBar 背景图片
    [self.searchBar setBackgroundImage:[UIImage imageNamed:@"bg_login_textfield_hl"]];
    // 03 显示取消按钮
    [self.searchBar setShowsCancelButton:true animated:true];
    
    // 04 遍历searchBar 子控件 拿到这个按钮 然后 重新设置它的title
    // UINavigationButton 他是系统私有的 但是我们可以肯定他一定继承UIButton
//    NSLog(@"%@",);
    
    for (UIView *view in self.searchBar.subviews[0].subviews) {
        // 如果判断他是class 是uibutton
        if ([view isKindOfClass:[UIButton class]]) {
            // 设置title
            UIButton *btn = (UIButton *)view;
            //
            [btn setTitle:@"取消" forState:UIControlStateNormal];
        }
    }   
}
  • 结束编辑
- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar{
    // 01 显示导航栏
    [self.navigationController setNavigationBarHidden:false animated:true];
    // 02 重新设置searchbar 背景图片
    [self.searchBar setBackgroundImage:[UIImage imageNamed:@"bg_login_textfield"]];
    // 03 关闭取消按钮
    [self.searchBar setShowsCancelButton:false animated:true];

    // 05 清空searchBar上的文字
    self.searchBar.text = @"";

}
  • 监听取消按钮点击
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar{
    // 取消键盘第一响应
    [self.searchBar resignFirstResponder];
}
  • 监听文字改变
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{
    // 判断searchBar text 的长度
    if (self.searchBar.text.length > 0) {
       
    }else {
     
    }
}
  • pragma mark - 懒加载

// searchBar
- (UISearchBar *)searchBar{
    if (!_searchBar) {
        _searchBar = [UISearchBar new];
        // 设置代理
        _searchBar.delegate = self;
        // 设置默认文字
        _searchBar.placeholder = @"请输入xxx";
        // 设置背景图片
        [_searchBar setBackgroundImage:[UIImage imageNamed:@"bg_login_textfield"]];
        _searchBar.tintColor = RGBColor(21, 188, 173);
    }
    return _searchBar;
}

你可能感兴趣的:(UISearchBar)