一、作用
1.UILabel用于显示文本信息,而UITextField和UITextView用于接收用户输入
2.UITextField只能输入一行,而UITextView能输入多行
二、属性和方法
1.第一响应者(firstResponder)
1️⃣概念:当用户点击一个UITextField、UITextView表明需要输入数据,点击的这个控件就会成为第一响应者,系统就会自动弹出一个键盘
2️⃣用法:
becomeFirstResponder成为第一响应者:弹出键盘
在ViewDidAppear中使用可以让页面刚出现就弹出键盘
- (void)viewDidAppear:(BOOL)animated{ [super viewDidAppear:animated]; //弹出键盘 [self.pwdTextFiled becomeFirstResponder];}
resignFirstResponder 取消第一响应者:隐藏键盘
//隐藏键盘[self.nameTextField resignFirstResponder];
2.keyboardType 更改键盘类型
具体的值在接口文档里面找
//设置键盘的类型 _nameTextFiled.keyboardType = UIKeyboardTypeDefault;
3.text 显示的内容
_nameTextField.text = @"123";
4.placeholder 默认提示内容,开始输入的时候就自动消失
_nameTextField.placeholder = @"name";
5.background设置背景图片,当borderStyle为roundRect的时候无效
_nameTextField.background = [UIImage imageNamed:@"1"];
6.borderStyle 外框的风格
//设置边框类型_nameTextField.borderStyle = UITextBorderStyleLine; //设置边框颜色 通过layer层控制 _nameTextField.layer.borderColor = [UIColor greenColor].CGColor; _nameTextField.layer.borderWidth = 1;
7.监听事件/行为 delegate 协议:<UITextFieldDeledate>
注意:要使用方法必须加入 _nameTextField.delegate = self;还要服从协议
1️⃣配置是否可以输入
//配置是否可以输入,yes可以,可以成为第一响应者,no不行//当textField becomeFirstresponser之前会调用- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{ return YES;}
2️⃣开始编辑了,点击输入框,即将开始输入内容
//开始编辑了,点击输入框,即将开始输入内容- (void)textFieldDidBeginEditing:(UITextField *)textField{ }
3️⃣配置是否可以取消第一响应者,是否可以停止输入内容
//当textField resignFirstresponser之前会调用,yes可以隐藏键盘,no不能隐藏,继续输入- (BOOL)textFieldShouldEndEditing:(UITextField *)textField{ return YES;}
4️⃣停止编辑
//停止编辑了- (void)textFieldDidEndEditing:(UITextField *)textField{ }
5️⃣键盘上的return按钮被点击了(常用)
//键盘上的return被点击了 (常用)- (BOOL)textFieldShouldReturn:(UITextField *)textField{ [self.nameTextField resignFirstResponder]; return YES;}
6️⃣实时监听textField上文本内容的改变(在解锁密码时使用)(重要)
//实时监听textField上文本内容的改变//range//string 新输入的字符 //即将用新输入的字符来拼接字符串,注意还没有拼接 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;{
//新的内容 = 用string去替换 text 上range范围的内容
NSString *newStr = textField.text stringByReplacingCharactersInRange:range withString:string;
NSLog(@"%lu %lu %@", range.location, range.length, string); return YES;}
注:先在终端打印string,然后string在textField上显示
输入12345
删除
刚开始位置为空,所以length为0