1.键盘的出现与隐藏
//弹出界面的同时就弹出键盘 - (void)viewDidAppear:(BOOL)animated{ [super viewDidAppear:animated]; //弹出键盘 [self.nameTextField becomeFirstResponder]; } //鼠标点击一下 隐藏键盘 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ //隐藏键盘 [self.nameTextField resignFirstResponder]; }
2.delegate的使用
(1)设置
_nameTextField.delegate = self;
@interface ViewController ()<UITextFieldDelegate>
(.h文件中)
(2)使用
1.配置是否可以输入(当textField becomeFirstResponder之前会调用这个方法)
YES ----可以编辑 能成为第一响应者
NO -----不可以编辑 不能成为第一响应者
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{ NSLog(@"是否可以开始编辑"); return YES; }
2.开始编辑
//开始编辑 (点击输入框,即将开始输入内容) - (void)textFieldDidBeginEditing:(UITextField *)textField{ NSLog(@"开始编辑 "); }
2018-08-07 18:11:43.823 UITextField方法和delegate设置[2854:94610] 是否可以开始编辑 2018-08-07 18:11:43.831 UITextField方法和delegate设置[2854:94610] 开始编辑
(1、2两步的运行结果)
3.配置是否可以取消第一响应者 (当testField resignFirstResponder之前会调用这个方法)
YES ----可以取消第一响应者
NO -----不可以取消,一直在那里等待输入
//配置是否可以取消第一响应者 是否可以停止输入内容 - (BOOL)textFieldShouldEndEditing:(UITextField *)textField{ NSLog(@"是否可以停止输入"); return YES; } @
4.停止编辑
//停止编辑了 - (void)textFieldDidEndEditing:(UITextField *)textField{ NSLog(@"停止编辑"); }
5.键盘上的return按钮被点击
- (BOOL)textFieldShouldReturn:(UITextField *)textField{ NSLog(@"键盘上return按钮被点击"); [self.nameTextField resignFirstResponder]; return YES; }
以上几步运行结果:
2018-08-07 18:25:08.304 UITextField方法和delegate设置[2966:100607] 是否可以开始编辑 2018-08-07 18:25:08.313 UITextField方法和delegate设置[2966:100607] 开始编辑 2018-08-07 18:25:13.693 UITextField方法和delegate设置[2966:100607] 键盘上return按钮被点击 2018-08-07 18:25:13.693 UITextField方法和delegate设置[2966:100607] 是否可以停止输入 2018-08-07 18:25:13.707 UITextField方法和delegate设置[2966:100607] 停止编辑
6.实时监听textField上文本内容的改变(非常重要)
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(nonnull NSString *)string{ //原来显示的内容 NSLog(@"改变之前的内容:%@", textField.text); //新的内容 = 用string去替换text上range范围的内容 NSString *newStr = [textField.text stringByReplacingCharactersInRange:range withString:string]; NSLog(@"即将显示的内容:%@", newStr); return YES; }
运行结果:
2018-08-07 18:34:27.044 UITextField方法和delegate设置[3063:104375] 是否可以开始编辑 2018-08-07 18:34:27.052 UITextField方法和delegate设置[3063:104375] 开始编辑 2018-08-07 18:34:30.593 UITextField方法和delegate设置[3063:104375] 改变之前的内容: 2018-08-07 18:34:30.594 UITextField方法和delegate设置[3063:104375] 即将显示的内容:E 2018-08-07 18:34:34.719 UITextField方法和delegate设置[3063:104375] 改变之前的内容:E 2018-08-07 18:34:34.719 UITextField方法和delegate设置[3063:104375] 即将显示的内容:Ef 2018-08-07 18:34:38.015 UITextField方法和delegate设置[3063:104375] 改变之前的内容:Ef 2018-08-07 18:34:38.015 UITextField方法和delegate设置[3063:104375] 即将显示的内容:Efg 2018-08-07 18:34:39.207 UITextField方法和delegate设置[3063:104375] 改变之前的内容:Efg 2018-08-07 18:34:39.207 UITextField方法和delegate设置[3063:104375] 即将显示的内容:Efgh 2018-08-07 18:34:41.103 UITextField方法和delegate设置[3063:104375] 改变之前的内容:Efgh 2018-08-07 18:34:41.103 UITextField方法和delegate设置[3063:104375] 即将显示的内容:Efghj 2018-08-07 18:34:43.759 UITextField方法和delegate设置[3063:104375] 改变之前的内容:Efghj 2018-08-07 18:34:43.760 UITextField方法和delegate设置[3063:104375] 即将显示的内容:Edging 2018-08-07 18:34:43.763 UITextField方法和delegate设置[3063:104375] 键盘上return按钮被点击 2018-08-07 18:34:43.763 UITextField方法和delegate设置[3063:104375] 是否可以停止输入 2018-08-07 18:34:43.776 UITextField方法和delegate设置[3063:104375] 停止编辑