UITextField详解:2-UITextField的代理方法简介
在实际开发中我们经常要监控UITextField的各种输入状态,以便在不同的输入状态或者时机执行一些特殊的操作。例如,搜索框中,可以随着用户输入的文字来实现实时的内容搜索,这时候就要用到UITextFieldDelegate中的代理方法。
UITextField代理方法介绍
在UITextField类中定义的如下代理方法相对常用,需要程序员重点学习掌握。
- 当开始输入时调用。即当这个UITextField对象成为第一响应者的时候调用。
- (void)textFieldDidBeginEditing:(UITextField *)textField;
- 编辑结束时调用。在iOS10中,又引入了一个新的方法,该方法可以获取编辑结束的原因,以便进一步处理。
- (void)textFieldDidEndEditing:(UITextField *)textField;
- (void)textFieldDidEndEditing:(UITextField *)textField reason:(UITextFieldDidEndEditingReason)reason NS_AVAILABLE_IOS(10_0);
- 是否允许编辑,当返回值是NO时,此时UITextField对象不能输入任何内容
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField;
- 是否允许编辑结束,并且放弃第一响应者状态
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField;
- 是否响应清除按钮
- (BOOL)textFieldShouldClear:(UITextField *)textField;
- 是否响应键盘上的返回按钮
- (BOOL)textFieldShouldReturn:(UITextField *)textField;
示例代码
下方的示例代码创建了一个UITextField对象,并且设置控制器为其代理,然后实现了两个代理方法,分别在开始输入以及结束输入时调用。
- 创建UITextField对象并设置代理
- (void)viewDidLoad {
[super viewDidLoad];
UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(50, 50, 250, 50)];
textField.backgroundColor = [UIColor whiteColor];
textField.placeholder = @"欢迎访问99iOS";;
textField.textAlignment = NSTextAlignmentCenter;
textField.borderStyle = UITextBorderStyleRoundedRect;
textField.delegate = self;
[self.view addSubview:textField];
}
- 设置控制器类遵守UITextFieldDelegate协议
@interface ViewController ()<UITextFieldDelegate>
@end
- 实现代理协议
- (void)textFieldDidBeginEditing:(UITextField *)textField;{
NSLog(@"%s",__func__);
NSLog(@"开始输入内容!");
}
- (void)textFieldDidEndEditing:(UITextField *)textField reason:(UITextFieldDidEndEditingReason)reason{
NSLog(@"%s",__func__);
NSLog(@"输入结束!");
}
运行结果如下,当开始输入以及结束输入时,会调用对应的代理方法,并执行其中的操作。
https://github.com/99ios/7.7.2
文章发布时间为: November 29th , 2016 at 11:17 pm
最后编辑时间为: September 14th , 2017 at 09:34 am
本文由 99ios 创作,转载请注明出处
最后编辑时间为: September 14th , 2017 at 09:34 am
本文由 99ios 创作,转载请注明出处