代理传递方法的作用
来源:互联网 发布:阿里云买域名空间 编辑:程序博客网 时间:2024/06/07 00:47
.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
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
阅读全文
0 0
- 代理传递方法的作用
- iOS10 AppDelegate文件中代理方法的作用
- c#代理的作用
- 反向代理的作用
- 代理的作用
- 代理的作用
- (静态代理模式)代理类的作用
- Ajax 客户端代理的作用
- 代理的概念和作用
- 代理的概念与作用
- JAVA动态代理的作用
- VC++ 介绍值传递/指针传递/引用传递的作用
- Nginx作为反向代理时传递客户端IP的设置方法
- Nginx作为反向代理时传递客户端IP的设置方法
- android事件传递机制,以及ondispatchEvent()、onInterceptTouchEvent()和OnTouchEvent()三个方法的作用关系
- java 代理的作用 因素 以及对代理的理解
- 代理的作用及原理的学习
- scrollview的代理方法
- Opencv3 Python基础教程2_视频
- 链栈的实现
- Mybatis逆向工程的使用
- 简单举例实现和说明委托
- GPIO简介
- 代理传递方法的作用
- 无题
- android实现自定义顶部标题栏
- Windows10下安装Ubuntu14.04双系统
- Https报错java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
- Java23种设计模式——深入理解对象适配器模式与抽象外观模式
- linux下的C语言开发(makefile编写)
- tomcat7.0线程设置参数的配置实例
- mongodb 提升性能