iOS UISearchBar简单使用与代理详解

UISearchBar代理方法的合理使用能够在很大一定程度上减少功能实现的复杂性,理解代理方法的具体响应时机和用法,能够让我们快速实现需求。

准备工作:
  • Xcode
  1. 1
    方法:

    一般SearchBar会设置成员变量或者声明属性方便进行全局访问,先定义一个

    UISearchBar的属性,并且遵循UISearchBarDelegate的代理,如下:

    iOS UISearchBar简单使用与代理详解
  2. 2

    在viewDidLoad加载时实例化UISearchBar,设置显示位置,代理以及相关的UI,如下:

    self.searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 64, SCREEN_WIDTH , 40)];

        self.searchBar.backgroundColor = [UIColor grayColor];

        self.searchBar.placeholder = @"请输入搜索内容";

        self.searchBar.delegate = self;

        [self.view addSubview:self.searchBar];

        UITextField *searchTextField = [self.searchBar valueForKey:@"_searchField"];

        searchTextField.font = [UIFont systemFontOfSize:15];

    iOS UISearchBar简单使用与代理详解
  3. 3

    一般搜索界面会在一进入界面之后就将键盘弹出,这样方便用户做搜索处理,可以在viewDidAppear方法中将定义的self.searchBar变为第一响应者,如下:

    - (void)viewDidAppear:(BOOL)animated

    {

        [super viewDidAppear:animated];

        [self.searchBar becomeFirstResponder];

    }

    iOS UISearchBar简单使用与代理详解
  4. 4

    UISearchBarDelegate下有相应的代理,在合适的代理方法里面可以实现我们大部分的需求定制化,代理为@optional可选,如下:

    iOS UISearchBar简单使用与代理详解
    iOS UISearchBar简单使用与代理详解
  5. 5

    UISearchBarDelegate代理方法:

    - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText

    {

    }

    可以在我们改变搜索框内容的时候实时响应,在这里可以进行本地数据筛选或者网络数据请求筛选。

    iOS UISearchBar简单使用与代理详解
  6. 6

    UISearchBarDelegate代理方法:

    - (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar

    {

        

    }

    - (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar __TVOS_PROHIBITED

    {

        

    }

    SearchButtonClicked与CancelButtonClicked分别代表点击搜索按钮和点击取消按钮时的响应,我们可以在这里进行键盘回收等需求操作。

    iOS UISearchBar简单使用与代理详解
  7. 7

    UISearchBarDelegate代理方法:

    - (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar

    {

        return YES;

    }

    返回值设置为布尔值,当设置为NO的时候搜索框是无法进行编辑的,必须设置为YES才能响应键盘。

    iOS UISearchBar简单使用与代理详解
    END