UISearchBar的使用

UISearchBar功能与UITextField类似,也是单行字符输入框

常用用途:用于搜索功能的实现

使用注意事项:

1、书签按钮属性与搜索回车按钮属性不能同时进行设置,只能二选一,否则会出现冲突

2、键盘中的回车按钮,默认是有输入的条件下才能进行点击响应

3、不能修改其输入源视图,默认是键盘

4、注意键盘的显示和隐藏,以及对输入控件的遮挡处理

5、通常退出按钮的显示是在代理方法中设置其显示或隐藏,而不是在初始化时就设置基显示

6、退出按钮标题默认是英文,可对其进行修改成中文显示,且修改前先显示退出按钮,否则第一次仍会显示为英文


[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. UISearchBar *searchbar = [[UISearchBar alloc] init];  
  2. // 添加到父视图  
  3. [self.view addSubview:searchbar];  
  4. // 设置原点坐标与大小  
  5. searchbar.frame = CGRectMake(10.050.0, (CGRectGetWidth(self.view.bounds) - 10.0 * 2), 40.0);  


[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. // 其他属性设置  
  2. // 显示类型  
  3. searchbar.barStyle = UIBarStyleBlack;  
  4. // 占位符,即提示信息  
  5. searchbar.placeholder = @"请输入搜索关键字";  
  6. //  顶部提示文本,相当于控件的Title  
  7. searchbar.prompt = @"iOS Dev";  
  8. // 是否显示书签按钮,默认隐藏(注意:书签按钮属性与搜索回车按钮属性不能同时进行设置,只能二选一,否则会出现冲突)  
  9. searchbar.showsBookmarkButton = YES;  
  10. // 是否显示退出按钮,默认隐藏(注意:通常退出按钮的显示是在代理方法中设置其显示或隐藏,而不是在初始化时就设置基显示)  
  11. //    searchbar.showsCancelButton = YES;  
  12. // 是否显示搜索回车按钮,默认隐藏(注意:书签按钮属性与搜索回车按钮属性不能同时进行设置,只能二选一,否则会出现冲突)  
  13. //    searchbar.showsSearchResultsButton = YES;  
  14. // 输入光标颜色  
  15. searchbar.tintColor = [UIColor redColor];  
  16. // 输入框边框颜色  
  17. searchbar.barTintColor = [UIColor brownColor];  
  18. // 输入框类型  
  19. searchbar.searchBarStyle = UISearchBarStyleProminent;  


[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. // 设置键盘类型  
  2. searchbar.keyboardType = UIKeyboardTypeURL;  
  3. // 设置回车键类型  
  4. searchbar.returnKeyType = UIReturnKeyGo;  
  5. // 添加键盘上方的子视图  
  6. UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0.00.0, CGRectGetWidth(self.view.bounds), 40.0)];  
  7. button.backgroundColor = [UIColor greenColor];  
  8. [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];  
  9. [button setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted];  
  10. [button setTitle:@"隐藏键盘" forState:UIControlStateNormal];  
  11. [button addTarget:self action:@selector(hiddenKeyboard) forControlEvents:UIControlEventTouchUpInside];  
  12. searchbar.inputAccessoryView = button;  


[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. /* 
  2. 设置代理 
  3. 1、设置实现UISearchBar代理方法的代理对象 
  4. 2、添加协议 
  5. 3、实现代理方法 
  6. */  
  7. searchbar.delegate = self;  

[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. @interface ViewController () <UISearchBarDelegate>  
  2.   
  3. @end  

[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. // UISearchBarDelegate  
  2.   
  3. - (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar  
  4. {  
  5.     // 即将开始编辑  
  6.     NSLog(@"即将开始编辑");  
  7.   
  8.       
  9.     // 显示或隐藏退出按钮  
  10.     // 方法1  
  11. //    searchBar.showsCancelButton = YES;  
  12.     // 方法2  
  13.     [searchBar setShowsCancelButton:YES animated:YES];  
  14.       
  15.     // 修改退出按钮标题为中文标题(注意:修改前先显示退出按钮,否则第一次仍会显示为英文)  
  16.     // 方法1 无效  
  17.     /* 
  18.      for (UIView *subView in searchBar.subviews) 
  19.      { 
  20.      if ([subView isKindOfClass:[UIButton class]]) 
  21.      { 
  22.      UIButton *btn = (UIButton *)subView; 
  23.      [btn setTitle:@"取消"  forState:UIControlStateNormal]; 
  24.      } 
  25.      } 
  26.      */  
  27.     // 方法2  
  28.     NSArray *subViews = searchBar.subviews;  
  29.     UIView *subView = subViews.firstObject;  
  30.     for (UIView *view in subView.subviews)  
  31.     {  
  32.         if ([view isKindOfClass:[UIButton class]])  
  33.         {  
  34.             UIButton *cancelButton = (UIButton *)view;  
  35.             [cancelButton setTitle:@"取消" forState:UIControlStateNormal];  
  36.               
  37.             break;  
  38.         }  
  39.     }  
  40.       
  41.     return YES;  
  42. }  
  43.   
  44. - (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar  
  45. {  
  46.     // 已经开始编辑  
  47.     NSLog(@"即将结束编辑");  
  48. }  
  49.   
  50. - (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar  
  51. {  
  52.     // 即将结束编辑  
  53.     NSLog(@"即将结束编辑");  
  54.       
  55.     // 显示或隐藏退出按钮  
  56.     // 方法1  
  57. //    searchBar.showsCancelButton = NO;  
  58.     // 方法2  
  59.     [searchBar setShowsCancelButton:NO animated:YES];  
  60.       
  61.     return YES;  
  62. }  
  63.   
  64. - (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar;  
  65. {  
  66.     // 已经结束编辑  
  67.     NSLog(@"已经结束编辑");  
  68. }  
  69.   
  70. - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText  
  71. {  
  72.     // 正在编辑过程中的改变  
  73.     NSLog(@"正在编辑过程中的改变");  
  74. }  
  75.   
  76. - (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text  
  77. {  
  78.     // 正在编辑  
  79.     NSLog(@"正在编辑");  
  80.       
  81.     /* 
  82.     通常用途 
  83.      1、判断输入的字符是否是限制输入的内容 
  84.      2、判断输入的字符长度是否是限制的输入的长度 
  85.      3、... 
  86.     */  
  87.       
  88.     return YES;  
  89. }  
  90.   
  91. - (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar  
  92. {  
  93.     // 点击了搜索按钮  
  94.     NSLog(@"点击了搜索按钮");  
  95.       
  96.     // 获取搜索输入内容  
  97.     NSString *text = searchBar.text;  
  98.     NSLog(@"text = %@", text);  
  99.       
  100.     // 隐藏键盘,即退出编辑  
  101.     [self hiddenKeyboard];  
  102. }  
  103.   
  104. - (void)searchBarBookmarkButtonClicked:(UISearchBar *)searchBar  
  105. {  
  106.     // 点击了书签按钮  
  107.     NSLog(@"点击了书签按钮");  
  108. }  
  109.   
  110. - (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar  
  111. {  
  112.     // 点击了退出按钮  
  113.     NSLog(@"点击了退出按钮");  
  114.       
  115.     // 隐藏键盘,即退出编辑  
  116.     [self hiddenKeyboard];  
  117. }  
  118.   
  119. - (void)searchBarResultsListButtonClicked:(UISearchBar *)searchBar  
  120. {  
  121.     // 点击了结果列表  
  122.     NSLog(@"点击了结果列表");  
  123. }  
  124.   
  125. - (void)searchBar:(UISearchBar *)searchBar selectedScopeButtonIndexDidChange:(NSInteger)selectedScope  
  126. {  
  127.     // 点击了结果列表  
  128.     NSLog(@"selectedScopeButtonIndexDidChange");  
  129. }  

[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. // 隐藏键盘  
  2. - (void)hiddenKeyboard  
  3. {  
  4.     [self.view endEditing:YES];  
  5. }  




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值