代理传递方法的作用

.h
#import <UIKit/UIKit.h>
@class YJPSearchBar_View;
@protocol YJPSearchBarDelegate <NSObject>

@optional

-(BOOL)searchBarShouldBeginEditing:(YJPSearchBar_View *)searchBar;
-(void)searchBarTextDidBeginEditing:(YJPSearchBar_View *)searchBar;
-(BOOL)searchBarShouldEndEditing:(YJPSearchBar_View *)searchBar; 
-(void)searchBarTextDidEndEditing:(YJPSearchBar_View *)searchBar;
-(void)searchBar:(YJPSearchBar_View *)searchBar textDidChange:(NSString *)searchText;
-(void)searchBarSearchButtonClicked:(YJPSearchBar_View *)searchBar;//确定按钮
-(void)searchBarCancelButtonClicked:(YJPSearchBar_View *)searchBar;

@end

/*************************************************************************/
@interface YJPSearchBar_View : UIView
//文本的颜色
@property (nonatomic,strong) UIColor *textColor;
//字体
@property (nonatomic,strong) UIFont *searchBarFont;
//内容
@property (nonatomic,strong) NSString *text;
//背景颜色
@property (nonatomic,strong) UIColor *searchBarColor;
//默认文本
@property (nonatomic,strong) NSString *placeHolder;
//默认文本的颜色
@property (nonatomic,strong) UIColor *placeHoldersColor;
//默认文本字体大小
@property (nonatomic,strong) UIFont *placeHolderFont;
//是否弹出键盘
@property (nonatomic,assign) BOOL isBecomeFirstResponder;
//设置右边按钮的样式
@property (nonatomic,strong) UIImage *deleteImage;
//设置代理
@property (nonatomic,weak) id<YJPSearchBarDelegate>delegate;

.m
#import "YJPSearchBar_View.h"

@interface YJPSearchBar_View ()<UITextFieldDelegate>

@property (nonatomic,strong) UITextField *textField;
@property (nonatomic,strong) UIImageView *leftView;
@property (nonatomic,strong) UIButton *deleteBtn;

@end

@implementation YJPSearchBar_View

-(instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
    [self initAllViews];
}
return self;
}

-(void)initAllViews
{
self.layer.cornerRadius = self.frame.size.height / 2;
self.layer.masksToBounds = YES;

    if (_leftView == nil) {
    _leftView = [[UIImageView alloc] initWithFrame:CGRectMake(10, (self.frame.size.height - 17) / 2.0f, 17, 17)];
    _leftView.image = [UIImage imageNamed:@"leftViewPhoto.jpg"];
    [self addSubview:_leftView];
    }

    if (_textField == nil) {
    _textField = [[UITextField alloc] initWithFrame:CGRectMake(_leftView.frame.size.width +     _leftView.frame.origin.x + 10, 2, self.frame.size.width - (_leftView.frame.size.width + _leftView.frame.origin.x + 10) - (self.frame.size.height - 4), self.frame.size.height - 4)];
    _textField.backgroundColor = [UIColor yellowColor];
    _textField.returnKeyType = UIReturnKeyDone;
    _textField.delegate = self;
    [_textField addTarget:self action:@selector(textFieldValueChange:) forControlEvents:UIControlEventEditingChanged];
    [self addSubview:_textField];
    }

    if (_deleteBtn == nil) {
    _deleteBtn = [UIButton buttonWithType:UIButtonTypeCustom];
    _deleteBtn.frame = CGRectMake(self.frame.size.width - self.frame.size.height - 4, 2, self.frame.size.height - 4, self.frame.size.height - 4);
    [_deleteBtn setImage:[UIImage imageNamed:@"deleteBtnPhoto.jpg"] forState:UIControlStateNormal];
    [_deleteBtn addTarget:self action:@selector(deleteClick:) forControlEvents:UIControlEventTouchUpInside];
    [self addSubview:_deleteBtn];
    }
}
相关代理(Custom)
-(void)setIsBecomeFirstResponder:(BOOL)isBecomeFirstResponder
{
_isBecomeFirstResponder = isBecomeFirstResponder;
if (_isBecomeFirstResponder) {
    [_textField becomeFirstResponder];
    }
}

-(void)setSearchBarColor:(UIColor *)searchBarColor
{
_searchBarColor = searchBarColor;
self.backgroundColor = _searchBarColor;
_textField.backgroundColor = _searchBarColor;
_leftView.backgroundColor  = _searchBarColor;
_deleteBtn.backgroundColor = _searchBarColor;
}

-(void)setSearchBarFont:(UIFont *)searchBarFont
{
_searchBarFont = searchBarFont;
_textField.font = _searchBarFont;
}

-(void)setTextColor:(UIColor *)textColor
{
_textColor = textColor;
_textField.textColor = textColor;
}

-(void)setPlaceHolder:(NSString *)placeHolder
{
_placeHolder = placeHolder;
_textField.placeholder = _placeHolder;
}

-(void)setPlaceHoldersColor:(UIColor *)placeHoldersColor
{
_placeHoldersColor = placeHoldersColor;
[_textField setValue:[UIColor whiteColor] forKeyPath:@"_placeholderLabel.textColor"];
}

-(void)setPlaceHolderFont:(UIFont *)placeHolderFont
{
_placeHolderFont = placeHolderFont;
[_textField setValue:_placeHolderFont forKeyPath:@"_placeholderLabel.font"];
}

-(void)setText:(NSString *)text
{
_text = text;
_textField.text = _text;
}

-(void)setDeleteImage:(UIImage *)deleteImage
{
_deleteImage = deleteImage;
[_deleteBtn setImage:_deleteImage forState:UIControlStateNormal];
}

#pragma mark - - deleteClick
-(void)deleteClick:(UIButton *)delete
{
/**
 *  删除
 */
if (_delegate && [_delegate respondsToSelector:@selector(searchBarCancelButtonClicked:)]) {
    [self.delegate searchBarCancelButtonClicked:self];
    }
}

#pragma mark - - textFieldValueChange
-(void)textFieldValueChange:(UITextField *)textField
{
if (_delegate && [_delegate respondsToSelector:@selector(searchBar:textDidChange:)]) {
    [self.delegate searchBar:self textDidChange:textField.text];
    }
}

#pragma mark - - UITextFieldDelegate
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
if (_delegate && [_delegate respondsToSelector:@selector(searchBarShouldBeginEditing:)]) {
    [self.delegate searchBarShouldBeginEditing:self];
    }
return YES;
}

-(void)textFieldDidBeginEditing:(UITextField *)textField
{
if (_delegate && [_delegate respondsToSelector:@selector(searchBarTextDidBeginEditing:)]) {
    [self.delegate searchBarTextDidBeginEditing:self];
    }
}

-(BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
if (_delegate && [_delegate respondsToSelector:@selector(searchBarTextDidEndEditing:)]) {
    [self.delegate searchBarShouldEndEditing:self];
    }
return YES;
}

-(void)textFieldDidEndEditing:(UITextField *)textField
{
if (_delegate && [_delegate respondsToSelector:@selector(searchBarTextDidEndEditing:)]) {
    [self.delegate searchBarTextDidEndEditing:self];
    }
}

-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
if (_delegate && [_delegate respondsToSelector:@selector(searchBarSearchButtonClicked:)]) {
    [self.delegate searchBarSearchButtonClicked:self];
    }
return YES;
}
/*
       ****** [在ViewController_ViewDidLoad中调用:] *******

 YJPSearchBar_View *searchBar = [[YJPSearchBar_View alloc] initWithFrame:CGRectMake(20, 80,     self.view.frame.size.width - 40, 40)];
 searchBar.placeHolder = @"搜索";
 searchBar.searchBarColor = [UIColor colorWithRed:205 / 255.0  green:235 / 255.0 blue:206 / 255.0 alpha:1.0f];
 searchBar.textColor = [UIColor whiteColor];
 searchBar.searchBarFont = [UIFont systemFontOfSize:15.0];
 searchBar.placeHoldersColor = [UIColor colorWithRed:255 / 255.0 green:255 / 255.0 blue:255 / 255.0 alpha:1.0f];
 searchBar.placeHolderFont = [UIFont systemFontOfSize:15.0f];
 searchBar.delegate = self;
 [self.view addSubview:searchBar];
 */

@end



作者:Jesonr
链接:http://www.jianshu.com/p/0eaeae75ffe3
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值