UITextField自定义使用(二)

版本记录

版本号 时间
V1.0 2017.06.18

前言

很多时候我们做APP,比如注册、登录,还有很多绑定手机号等等逻辑后者功能模块的时候,都需要输入框,ios中输入框有两种,一种是UITextField,另外一种是UITextView,前者继承自UIControl,可以响应事件并且不可换行和滚动,后者继承自UIScrollView,可以滚动和换行不可以响应事件。感兴趣的可以看下面这篇我写的文章。
1. UITextField自定义使用(一)
这一篇我们主要说一下UITextField的使用。

六、UITextField添加图像做背景

我们如果有需要在UITextField中设置图像为背景,只需要设置一个重要的属性就可以。

inputTextField.background = [UIImage imageNamed:@"1"];

下面我们看效果图

效果图

这里我们还可以设置disabledBackground,默认的是nil。


七、UITextField右侧删除按钮

很多时候我们要求输入框右侧有删除按钮,这里删除按钮的设置是一种模式,看代码。

inputTextField.clearButtonMode = UITextFieldViewModeWhileEditing;

这里是个枚举值

typedef NS_ENUM(NSInteger, UITextFieldViewMode) {
    UITextFieldViewModeNever,
    UITextFieldViewModeWhileEditing,
    UITextFieldViewModeUnlessEditing,
    UITextFieldViewModeAlways
};

我这里选择的是当编辑的时候出现删除和取消按钮,这里默认的是UITextFieldViewModeNever。

下面看实际效果

实际效果

八、UITextField左侧和右侧视图

我们知道UITextField中,左边和右边都可以有图片,下面我们看代码。

1. JJTextField.m
#import "JJTextField.h"

@implementation JJTextField

//更改占位文字在文本框中的位置

- (CGRect)placeholderRectForBounds:(CGRect)bounds
{
    return CGRectMake(bounds.origin.x + 60, bounds.origin.y, bounds.size.width, bounds.size.height);
}

@end
2. 初始化UITextField中设置左右图片
    //左侧视图
    UIButton *leftButton = [UIButton buttonWithType:UIButtonTypeContactAdd];
    leftButton.frame = CGRectMake(0.0, 0.0, 40, 40);
    inputTextField.leftView = leftButton;
    inputTextField.leftViewMode = UITextFieldViewModeAlways;
    
    //右侧视图
    UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
    rightButton.frame = CGRectMake(0.0, 0.0, 40, 40);
    inputTextField.rightView = rightButton;
    inputTextField.rightViewMode = UITextFieldViewModeAlways;

注意这里要设置显示模式,inputTextField.leftViewMode和inputTextField.rightViewMode,才可以相应的显示,下面看效果示意图。

效果示意图

九、UITextField第一响应者视图

  大家都知道,在UITextField或者UITextField成为默认响应的时候,会弹出系统键盘。如果对这两个控件的inputView属性设置了自定义的view,在其成为第一响应的时候系统键盘将不再弹出,取而代之的是赋值给inputView的那个view。inputAccessoryView是键盘的辅助视图,即键盘上面那部分。同样当对inputAccessoryView设置了自定义view时,键盘弹出的同时,该view会作为辅助视图出现在键盘的上面,和键盘一起弹出

@property (readwrite, retain) UIView *inputView;

@property (readwrite, retain) UIView *inputAccessoryView;

就是上边这两个可读可写的属性。

我们先看这段代码。

    //inputView
    UILabel *inputLabelView = [[UILabel alloc] initWithFrame:CGRectMake(0.0, 0.0, self.view.bounds.size.width, 120.0)];
    inputLabelView.text = @"我是inputView";
    inputLabelView.textColor = [UIColor orangeColor];
    inputLabelView.textAlignment = NSTextAlignmentCenter;
    inputLabelView.backgroundColor = [UIColor lightGrayColor];
    
    inputTextField.inputView = inputLabelView;

看一下效果图

inputView的实际效果图

下面我们在看代码。

    //inputView
    UILabel *inputLabelView = [[UILabel alloc] initWithFrame:CGRectMake(0.0, 0.0, self.view.bounds.size.width, 120.0)];
    inputLabelView.text = @"我是inputView";
    inputLabelView.textColor = [UIColor orangeColor];
    inputLabelView.textAlignment = NSTextAlignmentCenter;
    inputLabelView.backgroundColor = [UIColor lightGrayColor];
    
    inputTextField.inputView = inputLabelView;
    
    //inputAccessoryView
    UILabel *inputAccessoryLabelView = [[UILabel alloc] initWithFrame:CGRectMake(0.0, 0.0, self.view.bounds.size.width, 50.0)];
    inputAccessoryLabelView.text = @"我是inputAccessoryLabelView";
    inputAccessoryLabelView.textColor = [UIColor blueColor];
    inputAccessoryLabelView.textAlignment = NSTextAlignmentCenter;
    inputAccessoryLabelView.backgroundColor = [UIColor greenColor];

    inputTextField.inputAccessoryView = inputAccessoryLabelView;

下面我们看效果图

效果图

十、UITextField输入文字区域改变

  文本框输入文字的位置和范围也是可以改变的,方法就是重写其中的一个方法即可,下面看代码。

//在UITextField的自定义类中重写这个方法
//更改可编辑区域的大小

- (CGRect)editingRectForBounds:(CGRect)bounds
{
    return CGRectMake(bounds.origin.x + 20.0, bounds.origin.y, bounds.size.width + 15.0, bounds.size.height + 15.0);
}

下面看效果图

效果图

可以看见输入的起点在原起点后的20点的距离。

后记

很晚了,待续,睡觉了~~~

吾心向往之
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,701评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,649评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,037评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,994评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,018评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,796评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,481评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,370评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,868评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,014评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,153评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,832评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,494评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,039评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,437评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,131评论 2 356

推荐阅读更多精彩内容