UITextField的rightview和clearview共存

这是我的第一篇文章,好激动,如果有写的不好的地方请大家多多包涵,有不对的地方也请指出,谢谢~
正常情况下UITextField的rightView和clearView是不能同时出现的,你会发现设置了一个另一个就不见了,这里让他们两个同时出现,其实也不是同时出现,而是修改了leftView的位置,将leftView的位置移动到rigthView的位置,但是效果是一样的,话不多说,看代码

重写UITextField的方法,修改leftView的位置

我们新建一个类继承UITextField
这是代码

#import "LoginTextField.h"

@implementation LoginTextField

//文本框 显示 时的 位置 及 显示范围
- (CGRect)textRectForBounds:(CGRect)bounds
{
//    return CGRectInset(bounds, -10, 0);
    CGRect rect = [super textRectForBounds:bounds];
    return CGRectMake(30, rect.origin.y, rect.size.width + 100 , rect.size.height);
}
//文本框 编辑 时的 位置 及 显示范围
- (CGRect)editingRectForBounds:(CGRect)bounds
{
    CGRect rect = [super editingRectForBounds:bounds];
    return CGRectMake(30, rect.origin.y, rect.size.width + 100 , rect.size.height);
}
//文本框 清除按钮 的 位置 及 显示范围
- (CGRect)clearButtonRectForBounds:(CGRect)bounds
{
    CGRect rect = [super clearButtonRectForBounds:bounds];
    return CGRectOffset(rect, -50, 0);
}
//文本框 左视图 的 位置 及 显示范围
- (CGRect)leftViewRectForBounds:(CGRect)bounds
{
    CGRect rect = [super leftViewRectForBounds:bounds];
    return CGRectOffset(rect, [UIScreen mainScreen].bounds.size.width - 50, 0);
}
@end

在使用他的时候我们就直接初始化就好了

#import "ViewController.h"
#import 
#import "LoginTextField.h"

@implementation ViewController

- (void)viewDidLoad
{
    self.view.backgroundColor = [UIColor colorWithRed:150/255.0 green:222/255.0 blue:125/255.0 alpha:1.0];
    LoginTextField * field1 = [LoginTextField new];
    
    field1.clearButtonMode = UITextFieldViewModeAlways;
    
    field1.leftViewMode = UITextFieldViewModeAlways;
    
    field1.backgroundColor = [UIColor lightGrayColor];

    UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"hp_more"]];
    imgView.frame = CGRectMake(0, 0, 50, 50);
    [imgView setUserInteractionEnabled:YES];
    //我们可以给后面的图片加上点击事件
    UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tableView)];
    
    field1.leftView = imgView;
    
    [imgView addGestureRecognizer:tap];
    
    [self.view addSubview:field1];
    
    [field1 mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.offset(50);
        make.left.offset(0);
        make.width.offset(self.view.bounds.size.width);
        make.height.offset(50);
    }];
}

运行效果如下

UITextField的rightview和clearview共存_第1张图片
Simulator Screen Shot 2017年3月23日 下午10.28.21.png

我设置的编辑区域很小,所以就是这么长一点,具体看代码;现在rightView和clearView是不是都可以使用了,怎么样,是不是很简单,希望大家喜欢~

你可能感兴趣的:(UITextField的rightview和clearview共存)