1 UITextField的基本属性
1.UITextField的文本相关属性
// 获取文本框中的文字
@property(nullable, nonatomic, copy) NSString *text;
// 占位符
@property(nullable, nonatomic, copy) NSString *palceholder;
// 字体颜色
@property(nullable, nonatomic, strong) UIColor *textColor;
// 字体大小
@property(nullable, nonatomic, strong) UIFont* font;
// 文本对齐方式
@property(nullable) NSTextAlignment textAlignment;
2.UITextField的外观属性
// 2.UITextField的背景颜色
@property(nullable, nonatomic, copy) UIColor *backgroundColor;
// UITextField的边框样式。borderStyle有4种常见的样式,分别为:无边框UITextBorderStyleNone、线形边框UITextBorderStyleLine、带阴影效果的边框UITextBorderStyleBezel以及圆角边框UITextBorderStyleRoundedRect
@property(nonatomic) UITextBorderStyle borderStyle;
3.其他属性
// 设置输入文本时弹出的键盘类型(默认键盘、数字键盘、数字+符号键盘等)
@property(nonatomic) UIKeyvoardType keyboardType;
// 键盘弹出后的键盘返回键类型
@property(nonatomic) UIReturnKeyType returnKeyType;
// 设置输入框输入的字母是否大写。
@property(nonatomic) UITextAutocapitalizationType autocapitalizationType;
// 当开始编辑时,是否删除textField里面的所有字符串。
@property(nonatomic) BOOL clearsOnBeginEditing;
4.UITextField的创建
-(void)viewDidLoad {
[super viewDidLoad];
UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(50, 50, 250, 50)];
textField.backgroundColor = [UIColor shiteColor];
textField.placeholder = @"请输入";
textField.textAlignment = NSTextAlignmentCenter;
textField.borderStyle = UITextBorderStyleRoundedRect;
textField.clearsOnBeginEditing = YES;
textField.keyboardType = UIKeyboardTypeDefault;
textField.autocapitalizationType = UITextAutocapitalizationTypeNone;
textField.returnKetType = UIReturnKeyDone;
textField.clearsOnInsertion = YES;
[self.view addSubview:textField];
}
2 UITextField的代理方法简介
1.UITextField代理方法介绍
// 当开始输入时调用。即当这个UITextField对象成为第一响应者的时候调用。
-(void)textFieldDidBeginEditing:(UITextField *)textField;
// 编辑结束时调用。
-(void)textFieldDidEndEditing:(UITextField *)textField;
-(void)textFieldDidEndEditing:(UITextField *)textField reason:(UITextFieldDidEndEditingReason)reason NS_AVALIABLE_IOS(10_0);
// 是否允许编辑,当返回值是NO时,此时UITextField对象不能输入任何内容。
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField;
// 是否允许编辑结束,并且放弃第一响应者状态。
-(BOOL)textFieldShouldEndEditing:(UITextField *)textField;
// 是否响应清除按钮。
-(BOOL)textFieldShouldClear:(UITextField *)textField;
// 是否响应键盘上的返回按钮。
-(BOOL)textFieldShouldReturn:(UITextField *)textField;
-(void)viewDidLoad {
[super viewDidLoad];
UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(50, 50, 250, 50)];
// ...
textField.delegate= self;
[self.view addSubview:textField];
}
// 设置控制器类遵守UITextFieldDelegate协议。
@interface ViewController ()<UITextFiledDelegate>
@end
// 实现代理协议
-(void)textFieldDidBeginEditing:(UITextField *)textField {
}
3 UITextField的代理方法实例之键盘回收
在实际的开发过程中,以下情形需要考虑回收键盘:
用户完成了输入,点击了键盘中的完成按钮、返回按钮或继续按钮等。
用户点击了屏幕的任意位置,此时有可能是用户希望进行其他的操作,也需要隐藏键盘。
当需要进行键盘回收时,可以使用以下两种方法。这两种方法的本质是相同的,都是释放视图对象的第一响应者。
// 调用UIResponder类的resignFirstResponder方法。
-(BOOL)resignFirstResponder;
// 调用UITextField类的endEditing:方法,该方法本质上是对UIResponder类的resignFirstResponder:进行了封装。
-(BOOL)endEditing:(BOOL)force;
// 当用户点击键盘的完成键时,调用endEditing:方法实现键盘回收。
-(BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField endEditing:YES];
return YES;
}
// 当用户点击屏幕任意位置时,会调用touchesBegan:withEvent:方法,在该方法中也添加释放键盘的操作。
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEcent *)event {
[self.textField resignFirstResponder];
}
4 UITextField的代理方法实例之字数限制
在UITextFieldDelegate代理协议中,定义了textField:shouldChangeCharactersInRange:replacementString:方法,
当用户在一个UITextField对象中输入内容时,该方法会被持续调用,即每次输入都会调用该方法。
通过该代理协议,可以监控用户的输入过程,并且对于用户的输入内容进行控制。
该方法中提供了两个参数,其中range可以获取当前输入内容的长度,string可以获取输入的内容。
-(BOOL)textField:(UITextField *)textField shouldChangeCharadtersInRange:(NSRange) range replacementString:(NSString *) string;