美文网首页
UITextField的rightview和clearview共

UITextField的rightview和clearview共

作者: 留几分念想 | 来源:发表于2017-03-23 20:33 被阅读316次

    这是我的第一篇文章,好激动,如果有写的不好的地方请大家多多包涵,有不对的地方也请指出,谢谢~
    正常情况下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 <Masonry/Masonry.h>
    #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);
        }];
    }
    

    运行效果如下

    Simulator Screen Shot 2017年3月23日 下午10.28.21.png

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

    相关文章

      网友评论

          本文标题:UITextField的rightview和clearview共

          本文链接:https://www.haomeiwen.com/subject/agitottx.html