版本记录
版本号 | 时间 |
---|---|
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
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点的距离。
后记
很晚了,待续,睡觉了~~~