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 <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是不是都可以使用了,怎么样,是不是很简单,希望大家喜欢~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 摘要: IOS文本输入框的使用方法总结。 (1)---------------------------------...
    翻山越岭的另一边阅读 8,493评论 1 5
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,548评论 25 708
  • 每一次擦肩而过 都是为了重逢 每一次久别重逢 都是为了再见 我们在地球的两端 你在这头 而我在那头 相隔七个时区 ...
    我是小mei同学阅读 177评论 0 0
  • 2010年3月,谷歌退出中国市场。2009年,百度份额是77.2%,谷歌12.7%;到2015年,百度市场份额为7...
    007独自散步阅读 200评论 1 0
  • 或许只有训练营的人才会知道, 有一个群,人数很多却一直很静,如果闲聊,请对自己的言论负责 既然选择了这里,就拒绝了...
    乐甜派阅读 289评论 0 0