ios中導航條SearchBar控件雖然說很好用,但是有的時候控件的樣式不能達到我們的需要,比如我們需要導航條的右側有個放大鏡,系統提供的控件沒有這樣的,這就需要我們自定義一個這樣的searchBar了.
1,因為searchBar控件輸入的時候和textField想似,所以我們自定義的控件繼承與textField,起名字為searchView
我們可以看一下searchView.h里面的內容
1 #import <UIKit/UIKit.h> 2 3 @interface searchView : UITextField 4 5 @end
2,首先我們要在searchView.m里面實現初始化方法:
1 -(id)initWithFrame:(CGRect)frame 2 { 3 self = [super initWithFrame:frame]; 4 if(self){ 5 [self searchView]; //調用searchView方法 6 } 7 } 8 9 #pragma mark 實現searchView方法 10 -(void)searchView 11 { 12 self.placeholder = @"搜索店鋪或者商品"; 13 //設置textField的樣式 14 self.borderStyle = UITextBorderStyleRoundedRect; 15 //設置鍵盤的return鍵 的樣式 我們更改為search字樣 16 self.returnKeyType = UIReturnKeySearch; 17 //創建imageView對象 18 UIImageView * imgView = [[UIImageView alloc]init]; 19 //設置 imgVIew的用戶可交互性 20 imgView.userInteractionEnabled = YES; 21 //給 imgView賦值 tabbar_discover是一個放大鏡圖片 22 imgView.image = [UIImage imageNamed:@"tabbar_discover"]; 23 //設置self (textField)的 rightView屬性和 rightViewMode的屬性 24 self.rightView = imgView; 25 self.rightViewMode = UITextFieldViewModeAlways; 26 //向 這張圖片添加一個手勢 27 UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(btnClick:)]; 28 [imgView addGestureRecognizer:tap]; 29 30 31 } 32 //實現按鈕點擊事件 33 -(void)btnClick:(UIButton *)btn 34 { 35 NSLog(@" 111111111111%@",self.text); 36 NSLog(@"5555"); 37 }
3,在viewController.m里面 實現 首先記得導入頭文件呦!
1 #import "ViewController.h" 2 #import "searchView.h" 3 4 @interface ViewController ()<UITextFieldDelegate> 5 { 6 searchView * search; 7 } 8 @end 9 10 @implementation ViewController 11 12 - (void)viewDidLoad { 13 [super viewDidLoad]; 14 15 search = [[searchView alloc]initWithFrame:CGRectMake(20, 20, 280, 40)]; 16 search.delegate = self; 17 search.layer.cornerRadius = 20; 18 search.clipsToBounds = YES; 19 [self.view addSubview:search]; 20 21 22 } 23 - (BOOL)textFieldShouldReturn:(UITextField *)textField 24 { 25 NSLog(@"%@",search.text); 26 return YES; 27 }
這樣就行了 我們來看一下運行效果圖
這樣是不是達到你想要的效果了??嘿嘿